Windows phone 7 WP7上的网络客户端-抛出“;使用此方法的请求不能有请求正文“;
如果我在Consoleapp中执行此代码,它可以正常工作:Windows phone 7 WP7上的网络客户端-抛出“;使用此方法的请求不能有请求正文“;,windows-phone-7,webclient,webclient-download,Windows Phone 7,Webclient,Webclient Download,如果我在Consoleapp中执行此代码,它可以正常工作: string uriString = "http://url.com/api/v1.0/d/" + Username + "/some?amount=3&offset=0"; WebClient wc = new WebClient(); wc.Headers["Content-Type"] = "application/json"; wc.Headers["A
string uriString = "http://url.com/api/v1.0/d/" + Username + "/some?amount=3&offset=0";
WebClient wc = new WebClient();
wc.Headers["Content-Type"] = "application/json";
wc.Headers["Authorization"] = AuthString.Replace("\\", "");
string responseArrayKvitteringer = wc.DownloadString(uriString);
Console.WriteLine(responseArrayKvitteringer);
但是如果我像这样将代码移动到我的WP7项目中:
string uriString = "http://url.com/api/v1.0/d/" + Username + "/some?amount=3&offset=0";
WebClient wc = new WebClient();
wc.Headers["Content-Type"] = "application/json";
wc.Headers["Authorization"] = AuthString.Replace("\\", "");
wc.DownloadStringCompleted += new DownloadStringCompletedEventHandler(wc_DownloadStringCompleted);
wc.DownloadStringAsync(new Uri(uriString));
void wc_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
MessageBox.Show(e.Result);
}
我得到了一个例外:使用此方法的请求不能有请求正文
为什么?
解决方案是删除内容类型:
string uriString = "http://url.com/api/v1.0/d/" + Username + "/some?amount=3&offset=0";
WebClient wc = new WebClient();
//wc.Headers["Content-Type"] = "application/json";
wc.Headers["Authorization"] = AuthString.Replace("\\", "");
wc.DownloadStringCompleted += new DownloadStringCompletedEventHandler(wc_DownloadStringCompleted);
wc.DownloadStringAsync(new Uri(uriString));
void wc_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
MessageBox.Show(e.Result);
}
不确定为什么Console没有抛出,但实际上您使用了错误的标题 请求上的内容类型表示POST/PUT数据的内容(HTTP请求的主体)。您需要的是Accept头
wc.Headers["Accept"] = "application/json";
不确定Console为什么没有抛出,但实际上您使用了错误的标题 请求上的内容类型表示POST/PUT数据的内容(HTTP请求的主体)。您需要的是Accept头
wc.Headers["Accept"] = "application/json";
出于各种原因和更多(!),我建议您尝试使用WebRequest而不是WebClient包装器。。。WebClient的一些“技巧”可能会导致此问题,WebRequest使您能够更好地控制Http通信!嗨,佩德罗。我已经试过了。由于各种原因和更多(!),我建议您尝试使用WebRequest而不是WebClient包装器。。。WebClient的一些“技巧”可能会导致此问题,WebRequest使您能够更好地控制Http通信!嗨,佩德罗。我已经试过了。这给了我同样的结果。而且,尽管不相关,佩德罗的建议是非常好的。我做的第一件事是使用WebRequest创建自己的WebClient包装器。它更容易调试,也让您可以更好地控制UI中的操作。您是对的。标题中带有Accept的解决方案正在运行。标题中只有授权的解决方案也在运行。谢谢。另外,尽管不相关,佩德罗的建议很好。我做的第一件事是使用WebRequest创建自己的WebClient包装器。它更容易调试,也让您可以更好地控制UI中的操作。您是对的。标题中带有Accept的解决方案正在运行。标题中只有授权的解决方案也在运行。谢谢