使用GET进行WebRequest时出现ProtocolViolationException异常

4

我正在尝试从一个公共API获取数据,该API是为Windows Phone应用程序而设计的。

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);
}

但是在回调方法的最后一行,我不断地收到一个ProtocolViolationException错误,消息为此方法的请求不能有请求正文。我了解到这是因为我正在尝试发送数据,显然这是GET协议禁止的,但我不知道我在哪里进行了操作,即如何避免它。

1
尝试注释设置ContentType的那一行代码。据我所知,JSON请求始终会有一个BODY,而这对于GET请求来说并非如此。 - Andre Calil
1个回答

8

很可能是ContentType让它认为有一个请求体,因此出现了异常。

您应该设置Accept-Encoding


工作得很好。我认为我不需要Accept-Encoding,因为规范说明它将始终是JSON。 - Cedric Reichenbach

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接