반응형
문자열을 반환하기 위해 OkHttp의 response.body.toString ()을 가져올 수 없습니다.
OkHttp를 사용하여 일부 json 데이터를 얻으려고하는데 response.body().toString()
내가 얻은 것을 로깅하려고 할 때 이유를 알 수 없습니다.Results:﹕ com.squareup.okhttp.Call$RealResponseBody@41c16aa8
try {
URL url = new URL(BaseUrl);
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url(url)
.header(/****/)
.build();
Call call = client.newCall(request);
Response response = call.execute();
**//for some reason this successfully prints out the response**
System.out.println("YEAH: " + response.body().string());
if(!response.isSuccessful()) {
Log.i("Response code", " " + response.code());
}
Log.i("Response code", response.code() + " ");
String results = response.body().toString();
Log.i("OkHTTP Results: ", results);
내가 여기서 뭘 잘못하고 있는지 모르겠다. 응답 문자열은 어떻게 얻습니까?
.string()
에서 응답을 인쇄하는 기능을 사용 했습니다 System.out.println()
. 그러나 마침내 Log.i()
당신은 .toString()
.
따라서 .string()
응답 본문에 사용 하여 다음 과 같이 요청의 응답을 인쇄하고 받으십시오.
response.body().string();
노트:
.toString()
: 이것은 문자열 형식으로 개체를 반환합니다..string()
: 응답을 반환합니다.
이것이 당신의 문제를 해결한다고 생각합니다 ... 맞습니다.
누군가 내가 가진 것과 같은 이상한 일에 부딪 힐 경우를 대비해서. 디버그 모드 에서 개발하는 동안 코드를 실행 하고 분명히 OKHttp 2.4부터
.. 응답 본문은 한 번만 사용할 수있는 원샷 값입니다.
따라서 디버그 할 때 인스펙터의 "백그라운드"호출이 있으며 본문은 항상 비어 있습니다. 참조 : https://square.github.io/okhttp/3.x/okhttp/okhttp3/ResponseBody.html
은 response.body,.string()
한 번만 사용할 수 있습니다. 아래와 같이 사용하십시오 :
String responseBodyString = response.body.string();
use the responseBodyString as needed in your application.
예를 들어 다음과 같이 변경하십시오.
protected String doInBackground(String... params) {
try {
JSONObject root = new JSONObject();
JSONObject data = new JSONObject();
data.put("type", type);
data.put("message", message);
data.put("title", title);
data.put("image_url", imageUrl);
data.put("uid",uid);
data.put("id", id);
data.put("message_id", messageId);
data.put("display_name", displayName);
root.put("data", data);
root.put("registration_ids", new JSONArray(receipts));
RequestBody body = RequestBody.create(JSON, root.toString());
Request request = new Request.Builder()
.url(URL)
.post(body)
.addHeader("Authorization", "key=" + serverKey)
.build();
Response response = mClient.newCall(request).execute();
String result = response.body().string();
Log.d(TAG, "Result: " + result);
return result;
} catch (Exception ex) {
Log.e(TAG,"Exception -> "+ex.getMessage());
}
return null;
}
반응형
'development' 카테고리의 다른 글
SVG 둥근 모서리 (0) | 2020.12.13 |
---|---|
iOS 6/7에서 "재사용되는 테이블 셀에 대한 인덱스 경로 없음"메시지의 의미는 무엇입니까? (0) | 2020.12.13 |
검토를 위해 iOS 앱을 제출할 수 없습니다. (0) | 2020.12.13 |
MySQL GROUP BY 두 열 (0) | 2020.12.13 |
파이썬의 주어진 색인에 주어진 문자열에 문자열을 삽입하십시오. (0) | 2020.12.13 |