注册账号之类的步骤略过
两个重要信息 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 = "BSPdevelop ";
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;
}


