2012-03-02 3 views
1

내가 서버 -오류 동안

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

에서 오류 응답 아래 얻고 그러나 코드 -

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"} 

를 게시하려고 서버에서 오는 오류의 원인은 무엇입니까? 서버 측의 헤더 설정 때문이거나 위에 붙여 넣은 요청 코드에 문제가 있습니다.

편집 : 이 오류는 콘텐츠 유형 설정이 2 번인 것으로 보입니다. 아래 라인을 제거한 후

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

오류가 사라졌습니다.

위의 줄 대신 아래 줄만 제거하면 오류가 제거되지 않습니다.

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

첫 번째 줄만 제거하면 두 번째 오류가 제거되는 이유는 둘 다 콘텐츠 유형을 설정하기 때문입니다.

또한이 코드를 다른 프로젝트의 두 줄에 모두 사용했으며 오류없이 그대로 사용했습니다. 그것은 서버 측 문제와 같은데, 서버의 어떤 설정으로 인해이 문제가 발생했을 수 있습니다.

덕분에

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

라인을 제거

답변

3

보십시오. content-type 헤더를 두 번 더 추가하고 서버에 몇 가지 문제가있는 것 같습니다.

+0

답장을 보내 주셔서 감사합니다. post.setHeader ("Content-type", "application/json") 제거; didnt는 일한다. 하지만이 줄을 제거하면 se.setContentEncoding (새 BasicHeader (HTTP.CONTENT_TYPE, "application/json"))); 그것은 작동하고 서버에서 예상 응답을 얻었다. 그 이유는 무엇일까요? 도움을 주셔서 다시 한번 감사드립니다. – anujprashar

2

Content-Type 헤더를 두 번 설정하는 것처럼 보입니다. 마지막에 문자열 리터럴을 사용하고 한 번 처음에는 HTTP.CONTENT_TYPE을 사용합니다.

내 프로젝트에서이 문제를 해결 한 방법은 Content-Typeapplication/json으로 설정하는 것을 제외하고는 StringEntity을 정확히 동일하게 적용하는 것이 었습니다. 그런 식으로 다시 생각할 필요가 없었습니다.

+0

답장을 보내 주셔서 감사합니다. se.setContentEncoding (새 BasicHeader (HTTP.CONTENT_TYPE, "application/json"))) 줄을 제거했을 때; 서버에서 오류가 없습니다. 도와 줘서 고맙다. – anujprashar