2013-05-13 28 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