2013-05-13 32 views
4

我正在尝试从Windows Phone应用程序的公共API收集数据。使用GET执行WebRequest时的ProtocolViolationException

private void GatherPosts() 
{ 
    string url = baseURL + "?after=" + lastPostId + "&gifs=1"; 
    HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest; 
    request.ContentType = "text/json"; 
    request.Method = "GET"; 

    AsyncCallback callback = new AsyncCallback(PostRequestFinished); 
    request.BeginGetResponse(callback, request); 
} 

private void PostRequestFinished(IAsyncResult result) 
{ 
    HttpWebRequest request = (HttpWebRequest)result.AsyncState; 
    HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(result); 
} 

,但我一直在回调方法与消息A request with this method cannot have a request body.最后一行得到一个ProtocolViolationException。我读到这是因为我试图发送数据,GET协议明显禁止发送数据,但我没有看到我在做什么,即如何避免它。

+1

尝试评论您设置“ContentType”的行。 Afaik,json请求将总是有一个BODY,而'get'则不是这种情况。 – 2013-05-13 16:42:26

回答

8

这可能是ContentType,它使得它认为有一个请求体,因此是例外。

您想要设置Accept-Encoding

+0

工作优雅。我不认为我需要接受编码,因为规范说它将始终是JSON。 – 2013-05-13 17:13:46