0
Jersey 클라이언트를 사용하여 webservice에 큰 JSON 문자열을 android에서 게시해야합니다. 아래 코드는 HTTP 상태 505 오류와 함께 실패합니다. JSON 문자열의 길이가 너무 길지 않을 때 호출이 잘 작동하기 때문에 JSON 문자열의 길이가 문제가되는 것 같습니다 (200 자 길이로 테스트했습니다). 나는 또한이 정확한 코드가 일식에서 실행중인 저지 클라이언트에서 잘 작동하기 때문에 이것이 android에서 저지 라이브러리와 관련이 있다고 의심한다. 일식에서는 요청에 압축 헤더를 설정할 필요조차 없습니다. 아무도 내가 여기 놓친 게 뭔지 알 수 있니?android에 저지 클라이언트로 큰 JSON 문자열을 게시하는 중
formData.add("payload",payload);
config = new DefaultClientConfig(); // SSL configuration
config.getProperties().put(HTTPSProperties.PROPERTY_HTTPS_PROPERTIES,
new HTTPSProperties(JerseyClientBKS.getHostnameVerifier(), JerseyClientBKS.getSSLContext(getApplicationContext())));
ServiceFinder.setIteratorProvider(new AndroidServiceIteratorProvider());
client = Client.create(config);
webResource = client.resource(getSeletctedAddress()+"/api/document/submitHybridJSON");
builder = webResource.queryParams(formData).getRequestBuilder();
for (NewCookie c : getCookies()) {
if (c.getValue().indexOf("_") != -1){
builder = builder.cookie(c);
}
}
builder = builder.header("Content-Encoding", "gzip");
builder = builder.header("Accept-Encoding", "gzip");
Log.d(TAG, "posting.... = ");
response =builder.type(MediaType.APPLICATION_FORM_URLENCODED).post(ClientResponse.class);
Log.d(TAG,"response code "+response.getStatus());
Log.d(TAG,"valuesets "+response.getEntity(String.class));
5xx 오류는 서버의 오류 로그에 오류에 대한 세부 정보가 있어야합니다. 거기에 단서를 찾으십시오. –
@MarcB jboss를 사용합니다. 서버가 요청을받지 않은 것처럼 server.log에 아무것도 표시되지 않습니다. 오류에 대한 정보를 어디에서 찾을 수 있는지 알고 계십니까? 내가 말했듯이 JSON 문자열의 길이와 관련이 있어야합니다. –
200 바이트는 아무 것도 아니며 심지어 200KB는 문제가되지 않습니다. "gzip"으로 헤더를 제거하십시오. 나는 그들을 설정하는 것이 당신의 일이 아니라고 생각합니다. 이것은 적절한 경우 저지를해야합니다. – hgoebl