注册账号之类的步骤略过
两个重要信息 Checkword:j8DzkIFgmlomPt0aLuwU
和clientCode:BSPdevelop
报文是xml格式的字符串
注意事项:1开发环境
requestUrl = "https://bsp-ois.sit.sf-express.com:9443/bsp-ois/sfexpressService";(以群公告最新为准)
clientCode:BSPdevelop ;
Checkword:j8DzkIFgmlomPt0aLuwU;
2.在测试环境的时候就是图下的
调用地址:
顾客编码:
校验码:
3.签名过程和请求过程很简单一般不会出错,但是还是需要注意一下的
4.请求的消息头 的ContentType = "application/x-www-form-urlencoded";
表单提交
//json格式的时候会写 "text/json",千万别想太多的写了"text/xml",
整个过程很简单,只是在做这件事的时候想太多了-.-导致宝宝一直无法请求成功,一直是签名错误,但是吧-.- 当时签名方法没有问题,反正写下来,自己以后看到肯定能想起来,然后忍不住笑的-.-
简单的说就是一下几个几个步骤:
step1:xml格式的字符串(如何拼接有官方demo)和checkWord是自己的;
step2:verifyCode =MD5ToBase64String(xml+Checkword )//加密这个方法代码里面有;
step3:DoPost(requestUrl, xml, verifyCode);//请求部分代码里面有 这个会返回请求结果
step4:得到step3的返回结果后怎么处理就是自己的事了
public void SFOrder()
{
string xml = "<Request service='OrderService' lang='zh-CN'><Head>BSPdevelop</Head><Body><Order orderid='GW148999595994' express_type='1' j_province='广东省' j_city='深圳市' j_company='顺丰速运' j_contact='喵小萌' j_tel='95338' j_address='广东省深圳市福田区新洲十一街' d_province='北京' d_city='北京' d_company='一家公司' d_contact='萌小喵' d_tel='18888998899' d_address='北京市海淀区科学园科健路908' parcel_quantity='1' pay_method='1' custid='7551878519' ><Cargo name='服装' count='1' unit='台' weight='2.36' amount='2000' currency='CNY' source_area='中国'></Cargo></Order></Body></Request>";
string Checkword = "j8DzkIFgmlomPt0aLuwU";
string verifyCode =MD5ToBase64String(xml+Checkword );
string requestUrl = "https://bsp-ois.sit.sf-express.com:9443/bsp-ois/sfexpressService";//开发环境地址
//http://bsp-oisp.sf-express.com/bsp-oisp/sfexpressService 测试环境地址
string result =DoPost(requestUrl, xml, verifyCode);//这就得到了返回结果,解析部分就不记了,想起来也没什么小点了
}
public string MD5ToBase64String(string str)
{
MD5 md5 = new MD5CryptoServiceProvider();
byte[] MD5 = md5.ComputeHash(Encoding.UTF8.GetBytes(str));//MD5(注意UTF8编码)
string result = Convert.ToBase64String(MD5);//Base64
return result;
}
public bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
{ // 总是接受
return true;
}
public string DoPost(string Url, string xml, string verifyCode)
{
ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(CheckValidationResult);
string postData = string.Format("xml={0}&verifyCode={1}",xml, verifyCode);
//请求
WebRequest request = (HttpWebRequest)WebRequest.Create(Url);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded;charset=utf-8";
request.ContentLength = Encoding.UTF8.GetByteCount(postData);
byte[] postByte = Encoding.UTF8.GetBytes(postData);
Stream reqStream = request.GetRequestStream();
reqStream.Write(postByte, 0, postByte.Length);
reqStream.Close();
//读取
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream myResponseStream = response.GetResponseStream();
StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
string retString = myStreamReader.ReadToEnd();
myStreamReader.Close();
myResponseStream.Close();
return retString;
}
热门评论
在吗 私信给你了 有个路由推送的问题一直解决不了
com.ctc.wstx.exc.WstxParsingException: Unexpected close tag </Body>; expected </RouteRequest>.
at [row,col {unknown-source}]: [1,158];xml-->
参数设置正确,但它返回这些楼主知道是什么原因么。
楼主你好,我这边一直报“远程服务器返回错误: (500) 内部服务器错误。”,是什么原因呢