任何人都可以解释一下,为什么我不能重复使用WebClient对象发送另一个HTTP POST请求?
此代码无效:
var client = new WebClient();
client.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded";
string buySmsNumberResult = client.UploadString(ApiBuyUrl, apiBuyParams); //it works fine
//but when I try to send another HTTP POST with the existing WebClient object
string updateSmsNumberResult = client.UploadString(ApiUpdateNumberUrl, apiUpdateParams);
//it throws the exception
例外是:
远程服务器返回错误:(400)错误请求。
但是,如果我在第二次HTTP POST之前重新创建WebClient对象,它的工作没有任何问题。
此代码。
var client = new WebClient();
client.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded";
string buySmsNumberResult = client.UploadString(ApiBuyUrl, apiBuyParams);
//recreating of the WebCLient object
client = new WebClient();
client.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded";
string updateSmsNumberResult= client.UploadString(ApiUpdateNumberUrl, apiUpdateParams);
我在那里使用的API - 这是Nexmo API。
感谢。
答案 0 :(得分:5)
与PHeiberg一样,WebClient
在请求完成后清除Headers
,因此再次添加它们会使其正常工作。
在回答关于创建新对象的个人偏好的LokiSinclair评论时,我必须说如果您使用使用Cookie和其他相关功能的继承WebClient
,这不是一个好习惯您需要在请求之间共享。