继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

顺丰丰桥BSP对接小记——C#

luckyer
关注TA
已关注
手记 9
粉丝 10
获赞 62

注册账号之类的步骤略过
两个重要信息 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;
        }
打开App,阅读手记
3人推荐
发表评论
随时随地看视频慕课网APP

热门评论

在吗 私信给你了 有个路由推送的问题一直解决不了

com.ctc.wstx.exc.WstxParsingException: Unexpected close tag </Body>; expected </RouteRequest>.

 at [row,col {unknown-source}]: [1,158];xml-->

参数设置正确,但它返回这些楼主知道是什么原因么。

楼主你好,我这边一直报“远程服务器返回错误: (500) 内部服务器错误。”,是什么原因呢

查看全部评论