Чтобы получить просто тело в качестве ответа с StringRequest()
, вы можете написать:
val stringRequest = StringRequest(Request.Method.GET, url,
Response.Listener<String> { response -> /*do something with the response*/ },
Response.ErrorListener { error -> /*do something with the error*/ })
Чтобы получить заголовок, вы должны переопределить parseNetworkResponse()
следующим образом:
val stringRequest = StringRequest(Request.Method.GET, url,
Response.Listener<String>{ response -> /*do something with the response*/ },
Response.ErrorListener{ error -> /*do something with the error*/ }){
override fun parseNetworkResponse(response:NetworkResponse): Response<String>{
try{
// returns some numbers, but not the body:
val bodyString = getBody().toString()
// returns some numbers as well:
val responseString = super.parseNetworkResponse(response).toString()
// works fine, returns entire header:
val header = response.headers
// works fine, returns the header field value of "key":
//val value = response.headers.get("key")
val all = header.toString() + bodyString
return (Response.success(all, HttpHeaderParser.parseCacheHeaders(response)))
}catch (e: Exception){
return Response.error(ParseError(e))
}
}
}
Однако, когда я переопределяю parseNetworkResponse()
, отклик тела, похоже, исчезает, даже если я позвоню super.parseNetworkResponse()
или getBody()
.
Я бы хотел получить заголовок и тело от одного StringRequest()
.
Как добавить заголовок в качестве объекта JSON к ответу на запрос JSON было описано здесь для Java: Получение заголовков из ответа в виде залпа
ВKotlin parseNetworkResponse()
будет выглядеть так:
override fun parseNetworkResponse(response:NetworkResponse): Response<JSONObject>{
try{
val charsetString: String = HttpHeaderParser.parseCharset(response.headers, PROTOCOL_CHARSET);
val charset: Charset = charset(charsetString)
val jsonString = String(response.data, charset)
val jsonResponse = JSONObject(jsonString)
jsonResponse.put("headers", JSONObject(response.headers))
return Response.success(jsonResponse, HttpHeaderParser.parseCacheHeaders(response))
}catch (e: JSONException){
return Response.error(ParseError(e))
}
}
, который работает нормально.
Итак, я полагаю, что и StringRequest () должно быть возможно получить и.
Что я делаю не так?