http方式的联调经验
这近在做一个项目,现在刚与厂家做联调。我的系统是windows2008,他的测试机是unix,他本机是XP的。本来用httppost方式给他本机发送中文数据是正常的,但是发送到他的unix上,中文就变化了一大堆问号。开始觉得挺奇怪的,后来有个程序员说要对含有中文的URL进行编码。
stringResponse.Append("&Result=" +System.Web.HttpUtility.UrlEncode ("你好啊!") );
按照上面的方式确实解决了一个问题,但是因为在url传递很多内容,怕是会受到限制,我们就采用了传递XML. ( request.ContentType = "text/xml;charset=UTF-8";)
stringResponse.Append("<response>");
stringResponse.Append("<RequestId>" + _requestId + "</RequestId>");
stringResponse.Append("<Result>" + _result + "</Result>");
stringResponse.Append("<CompanyCode>" + _companyCode + "</CompanyCode>");
stringResponse.Append("</response>");
传递过去以后是没有问题,但是在前面多了了一个问号。也确定了双方约定的格式都是utf-8,也不知道为什么。目前没有查到原因。
userResponse.Result ="1";
userResponse.RequestId = userRequest.RequestId;
userResponse.CompanyCode = userRequest.CompanyCode;
log.Info("操作结果状况:"+userResponse.ToString());
Response.Write(userResponse.ToString());
Response.Flush();
// Response.Close(); //对方接收post数据超时,流没读完就关闭
还有一个问题是在传递的过程中,我如果将Response.Close();写上,对方会因为等待数据超时而失败。只能将这句话注释掉。具体原因也不知道。
这些问题都是我联调时的小问题,但是也是现在没想明白的。先记着,以后再看看能不能解决。