2012-03-02 87 views
1

我想用下面代碼 -錯誤而發佈的JSON數據

HttpClient client = new DefaultHttpClient(); 
HttpConnectionParams.setConnectionTimeout(client.getParams(), 30000); 
HttpResponse response; 
try { 
    HttpPost post = new HttpPost(url); 
    StringEntity se = new StringEntity(json.toString()); 
    se.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE, "application/json")); 
    post.setEntity(se); 
    post.setHeader("Accept", "application/json"); 
    post.setHeader("Content-type", "application/json"); 
    response = client.execute(post); 

} catch (Exception e) { 
    Log.e("Client", "sendJson", e); 
} 

張貼JSON對象

{"venue":"places, US"} 

不過我正在下面從服務器 -

{"description":"Invalid token character ',' in token \"json, application/json\"","errorCode":2000} 

錯誤響應來自服務器的錯誤的原因是什麼?是因爲服務器端的某個標頭設置,或者上面粘貼的請求代碼有問題。

編輯: 看起來像這個錯誤是由於內容類型設置2次。刪除下線後

se.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE, "application/json")); 

錯誤消失。

但是,當我只刪除下面的行而不是上面寫的行時,它不會刪除錯誤。

post.setHeader("Content-type", "application/json"); 

爲什麼只去掉第一線工作,當我刪除第二屆一個錯誤仍然存​​在,因爲二者都是設定的內容類型。

此外,我已經在其他項目中使用這兩行代碼,它在其中沒有任何錯誤的工作。它看起來像服務器端問題,服務器上的設置可能導致了這個問題。

感謝

回答

3

嘗試刪除

post.setHeader("Content-type", "application/json"); 

線。它看起來像是你添加了兩次內容類型的頭文件,服務器有一些問題。

+0

感謝您的回覆。刪除post.setHeader(「Content-type」,「application/json」);沒有工作。但是,當我刪除這一行se.setContentEncoding(新的BasicHeader(HTTP.CONTENT_TYPE,「application/json」));它工作,我得到了預期的服務器響應。什麼可能是它的原因?再次感謝您的幫助。 – anujprashar 2012-03-02 19:58:43

2

它在我看來像你設置了兩次Content-Type標題。一旦與字符串文字結尾,並在HTTP.CONTENT_TYPE一開始。

我在我的項目中解決這個問題的方法是將StringEntity的行爲完全一樣,除了將Content-Type設置爲application/json。那樣,我再也不用考慮了。

+0

感謝您的回覆。當我刪除行se.setContentEncoding(新的BasicHeader(HTTP.CONTENT_TYPE,「application/json」));我從服務器沒有錯誤。感謝您的幫助。 – anujprashar 2012-03-02 20:03:26