HTTP POST失败的大型有效负载

时间:2014-04-18 20:12:17

标签: c# http-post

我有代码使用WebClient.UploadValues对供应商的网站执行HTTP POST。当有效负载大小在1.6 MB以下时,响应是一些预期的XML数据。如果更大,供应商网站的响应为空。

var client = new WebClient();
client.Encoding = Encoding.UTF8;
byte[] response = client.UploadValues(strTargetUri, paramsNameValueCollection);

供应商表示他们通常会收到更大的有效载荷。我无法找到任何可能会按大小或时间限制传出有效负载的IIS或WCF设置。如果我超出了我设置的限制,.NET将抛出异常,而不仅仅返回null。

对我可能缺少什么的任何建议?或者我应该与供应商分享什么?

更新 我收到了在供应商端收到的样品。当大约2MB以下时,它们表明它们直接接收XML,例如:

<STAT>  
    <REQUEST _SEQUENCE_ID="1">
        <CUSTOMER>...

但是当更大时,它1)是URL编码的,2)仍然在其他查询字符串组件之前,3)包含一些嵌入式&#34;附加组件&#34; XML命名空间引用等XML:

integrator=MyVal&userId=MyUser&password=12345&payload=%3cSTAT+xmlns%3axsd%3d%22http%3a%2f%2fwww.w3.org%2f2001%2fXMLSchema%22+xmlns%3axsi%3d%22http%3a%2f%2fwww.w3.org%2f2001%2fXMLSchema-instance%22%3e%3cREQUEST+_SEQUENCE_ID%3d%221%22...

我对POST的简单理解以及我在场景之间没有区别的事实使我认为不同之处在于供应商的处理软件已经“窒息”了#34;并向他们展示不同的结果。我让我的net eng团队帮助我跟踪传出的数据包,看看我们是否可以验证我们在最后一刻发送的内容。

1 个答案:

答案 0 :(得分:0)

约翰,

限制很可能是服务器,因此您可能需要与供应商联系。例如,Tomcat服务器的默认最大,非多部分,POST大小仅为2MB。如果您可以检测到服务器是Tomcat,则可以建议它们增加Connnector的maxPostSize属性。