想在系统里直接进行顺丰快递单查询,已下是我写的方法,可是怎么都不成功,看哪位高人可以指点下。
我的设想是分2个网页,一个是前端UI查询页,一个是后台异步处理页负责获取验证码跟模拟Post表单。前端:test.aspx
<%@ Page Language="C#" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>test</title>
<script src="inc/jquery-1.2.6.min.js" type="text/javascript"></script>
<script language = "javascript">
$(document).ready(function(){
$("#submit").click(function(){
if($("#vcode").val()=="")
{
alert("请输入验证码");
return;
}
$.ajax({
type:"get",
url:"KuaiDi.ashx?NoCopyRight=1",
data:"action=shunfeng&order="+$("#order").val()+"&code="+$("#vcode").val(),
cache:false,
success:function(msg){
$("#result").append(msg);
},//end seccess
error:function(XMLHttpRequest,textStatus){if(textStatus=='parsererror'){alert('Get Para error')}else{alert('error_GetPara')};}
});//end ajax
});
});
</script>
</head>
<body>
订单号:<input type="text" id="order" /><span id="code"><img src="KuaiDi.ashx?NoCopyright=1&type=shunfeng" /></span>
<input type="text" id="vcode" />
<input type="button" id="submit" value="提交" />
<div id="result"></div>
</body>
</html>
异步处理页:kuaidi.ashx.cs public class KuaiDi : IHttpHandler
{ public CookieContainer _cookieCon = new CookieContainer();
public string cookieHeader = "";
public void ProcessRequest(HttpContext context)
{
string type = context.Request.Params["type"] == null ? "" : context.Request.Params["type"];
string action = context.Request.Params["action"] == null ? "" : context.Request.Params["action"];
string order = context.Request.Params["order"] == null ? "" : context.Request.Params["order"];
string code = context.Request.Params["code"] == null ? "" : context.Request.Params["code"];
if (action != "" && order != "")
{
string result = "";
switch (action)
{
case "shunfeng":
result = GetShunFeng(order, code);
break;
default:
break;
}
context.Response.Write(result);
}
else if(type != "")
{
switch (type)
{
case "shunfeng":
GetCode("http://kf.sf-express.com/css/loginmgmt/imgcode");
break;
default:
break;
}
}
} private string GetShunFeng(string order,string code)
{
string result = string.Empty;
string param = "waybills=" + order + "&verifycode=" + code;
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://kf.sf-express.com/css/myquery/queryBill.action");
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = param.Length;
HttpWebResponse response = null; try
{
CookieContainer myCookieContainer = new CookieContainer();
string ccookie = "__utma=265537869.28284888.1281249637.1281249637.1281249637.1; __utmz=265537869.1281249637.1.1.utmccn=(direct)|utmcsr=(direct)|utmcmd=(none); JSESSIONID=BB105A54DDB2F55D478F3780D878B628.css1";
myCookieContainer.SetCookies(request.RequestUri, ccookie);
request.CookieContainer = myCookieContainer;
StreamWriter swRequestWriter = new StreamWriter(request.GetRequestStream());
swRequestWriter.Write(param);
if (swRequestWriter != null)
{
swRequestWriter.Close();
}
response = (HttpWebResponse)request.GetResponse();
using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
{
result = reader.ReadToEnd();
}
return result;
}
catch
{
return "快件跟踪失败";
}
finally
{
if (response != null)
response.Close();
}
} /// <summary>
/// 验证码
/// </summary>
/// <param name="strURL">验证码地址</param>
/// <returns></returns>
public void GetCode(string strURL)
{
HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(strURL);
myHttpWebRequest.Method = "GET";
myHttpWebRequest.KeepAlive = true;
string ccookie = "__utma=265537869.28284888.1281249637.1281249637.1281249637.1; __utmz=265537869.1281249637.1.1.utmccn=(direct)|utmcsr=(direct)|utmcmd=(none); JSESSIONID=BB105A54DDB2F55D478F3780D878B628.css1";
myHttpWebRequest.CookieContainer = _cookieCon;
_cookieCon.SetCookies(myHttpWebRequest.RequestUri, ccookie);
using (HttpWebResponse response = (HttpWebResponse)myHttpWebRequest.GetResponse())
{
System.Drawing.Image code = System.Drawing.Image.FromStream(response.GetResponseStream(), false, false);
MemoryStream ms = new MemoryStream();
code.Save(ms, ImageFormat.Jpeg);
HttpContext.Current.Response.ClearContent();
HttpContext.Current.Response.ContentType = "image/Jpeg";
HttpContext.Current.Response.BinaryWrite(ms.ToArray());
ms.Dispose();
code.Dispose();
}
} public bool IsReusable
{
get
{
return false;
}
}
}
我的设想是分2个网页,一个是前端UI查询页,一个是后台异步处理页负责获取验证码跟模拟Post表单。前端:test.aspx
<%@ Page Language="C#" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>test</title>
<script src="inc/jquery-1.2.6.min.js" type="text/javascript"></script>
<script language = "javascript">
$(document).ready(function(){
$("#submit").click(function(){
if($("#vcode").val()=="")
{
alert("请输入验证码");
return;
}
$.ajax({
type:"get",
url:"KuaiDi.ashx?NoCopyRight=1",
data:"action=shunfeng&order="+$("#order").val()+"&code="+$("#vcode").val(),
cache:false,
success:function(msg){
$("#result").append(msg);
},//end seccess
error:function(XMLHttpRequest,textStatus){if(textStatus=='parsererror'){alert('Get Para error')}else{alert('error_GetPara')};}
});//end ajax
});
});
</script>
</head>
<body>
订单号:<input type="text" id="order" /><span id="code"><img src="KuaiDi.ashx?NoCopyright=1&type=shunfeng" /></span>
<input type="text" id="vcode" />
<input type="button" id="submit" value="提交" />
<div id="result"></div>
</body>
</html>
异步处理页:kuaidi.ashx.cs public class KuaiDi : IHttpHandler
{ public CookieContainer _cookieCon = new CookieContainer();
public string cookieHeader = "";
public void ProcessRequest(HttpContext context)
{
string type = context.Request.Params["type"] == null ? "" : context.Request.Params["type"];
string action = context.Request.Params["action"] == null ? "" : context.Request.Params["action"];
string order = context.Request.Params["order"] == null ? "" : context.Request.Params["order"];
string code = context.Request.Params["code"] == null ? "" : context.Request.Params["code"];
if (action != "" && order != "")
{
string result = "";
switch (action)
{
case "shunfeng":
result = GetShunFeng(order, code);
break;
default:
break;
}
context.Response.Write(result);
}
else if(type != "")
{
switch (type)
{
case "shunfeng":
GetCode("http://kf.sf-express.com/css/loginmgmt/imgcode");
break;
default:
break;
}
}
} private string GetShunFeng(string order,string code)
{
string result = string.Empty;
string param = "waybills=" + order + "&verifycode=" + code;
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://kf.sf-express.com/css/myquery/queryBill.action");
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = param.Length;
HttpWebResponse response = null; try
{
CookieContainer myCookieContainer = new CookieContainer();
string ccookie = "__utma=265537869.28284888.1281249637.1281249637.1281249637.1; __utmz=265537869.1281249637.1.1.utmccn=(direct)|utmcsr=(direct)|utmcmd=(none); JSESSIONID=BB105A54DDB2F55D478F3780D878B628.css1";
myCookieContainer.SetCookies(request.RequestUri, ccookie);
request.CookieContainer = myCookieContainer;
StreamWriter swRequestWriter = new StreamWriter(request.GetRequestStream());
swRequestWriter.Write(param);
if (swRequestWriter != null)
{
swRequestWriter.Close();
}
response = (HttpWebResponse)request.GetResponse();
using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
{
result = reader.ReadToEnd();
}
return result;
}
catch
{
return "快件跟踪失败";
}
finally
{
if (response != null)
response.Close();
}
} /// <summary>
/// 验证码
/// </summary>
/// <param name="strURL">验证码地址</param>
/// <returns></returns>
public void GetCode(string strURL)
{
HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(strURL);
myHttpWebRequest.Method = "GET";
myHttpWebRequest.KeepAlive = true;
string ccookie = "__utma=265537869.28284888.1281249637.1281249637.1281249637.1; __utmz=265537869.1281249637.1.1.utmccn=(direct)|utmcsr=(direct)|utmcmd=(none); JSESSIONID=BB105A54DDB2F55D478F3780D878B628.css1";
myHttpWebRequest.CookieContainer = _cookieCon;
_cookieCon.SetCookies(myHttpWebRequest.RequestUri, ccookie);
using (HttpWebResponse response = (HttpWebResponse)myHttpWebRequest.GetResponse())
{
System.Drawing.Image code = System.Drawing.Image.FromStream(response.GetResponseStream(), false, false);
MemoryStream ms = new MemoryStream();
code.Save(ms, ImageFormat.Jpeg);
HttpContext.Current.Response.ClearContent();
HttpContext.Current.Response.ContentType = "image/Jpeg";
HttpContext.Current.Response.BinaryWrite(ms.ToArray());
ms.Dispose();
code.Dispose();
}
} public bool IsReusable
{
get
{
return false;
}
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货