编程语言
首页 > 编程语言> > c# – 重用WebClient对象发送另一个HTTP请求

c# – 重用WebClient对象发送另一个HTTP请求

作者:互联网

任何人都可以解释一下,为什么我不能重用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

例外情况是:

The remote server returned an error: (400) Bad Request.

但是如果我在第二次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.

谢谢.

解决方法:

PHeiberg声明的一样,WebClient在请求完成后清除Headers,因此再次添加它们将使其工作.

在回答LokiSinclair关于创建新对象的个人偏好的评论时,我必须说如果您使用的是继承的WebClient,它使用您需要在请求之间共享的Cookie和其他相关功能,那么这不是一个好习惯.

标签:c,http,net,nexmo
来源: https://codeday.me/bug/20190519/1137496.html