Android-Volley : 为 JsonArrayRequest 设置 HTTP Header
Android-Volley : set HTTP Header for JsonArrayRequest
所以我看到了几个 JsonObjectRequests 示例,其中添加了这段代码
@Override
public String getBodyContentType() {
return "application/json";
}
有时会使用此代码
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
HashMap<String, String> headers = new HashMap<String, String>();
headers.put("Content-Type", "application/json");
return headers;
}
无论哪种方式,它总是与 JsonObjectRequest 结合使用。我真的不知道在 JsonArrayRequest 中的何处添加方法的 @Override
。这就是我的 JsonArrayRequest 的样子
JsonArrayRequest localJReq = new JsonArrayRequest(localURL,
new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response){
try{
for (int i=0; i < response.length(); i++)
{
JSONObject jsonObject = response.getJSONObject(i);
String title = jsonObject.getString("Title");
data += "Beschreibung: "+title+"\n\n\n";
}
output.setText(data);
}catch (JSONException e){
e.printStackTrace();
}
}
},
new Response.ErrorListener(){
@Override
public void onErrorResponse(VolleyError error){
error.printStackTrace();
Toast.makeText(MainActivity.this, "No more Items Available",
Toast.LENGTH_LONG).show();
}
});
我曾尝试将其添加到 {}
中,就在最后一次收盘 )
之后,但这没有用。我试着把它放在 Response.Listener
里面,但也没有用。所以我有点困惑。
无论如何,我认为我正在制作 JsonArrayRequest 真的很奇怪,但是由于我的 REST API 正在接受 HTML & JSON 作为响应,Volley 似乎得到 HTML 响应而不是 JSON。这让我的应用程序中没有任何项目。这不是很奇怪吗?因为它是一个 JsonRequest,Request 不应该自己将 content-type 设置为 application/json 吗?我希望通过将 content-type 设置为 application/json 我将获得正确的响应类型。
您可以在请求结束时调用这些方法,然后中断;
JsonArrayRequest localJReq = new JsonArrayRequest(localURL,
new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
}) {//here before semicolon ; and use { }.
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
return super.getHeaders();
}
@Override
public String getBodyContentType() {
return super.getBodyContentType();
}
};
所以我看到了几个 JsonObjectRequests 示例,其中添加了这段代码
@Override
public String getBodyContentType() {
return "application/json";
}
有时会使用此代码
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
HashMap<String, String> headers = new HashMap<String, String>();
headers.put("Content-Type", "application/json");
return headers;
}
无论哪种方式,它总是与 JsonObjectRequest 结合使用。我真的不知道在 JsonArrayRequest 中的何处添加方法的 @Override
。这就是我的 JsonArrayRequest 的样子
JsonArrayRequest localJReq = new JsonArrayRequest(localURL,
new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response){
try{
for (int i=0; i < response.length(); i++)
{
JSONObject jsonObject = response.getJSONObject(i);
String title = jsonObject.getString("Title");
data += "Beschreibung: "+title+"\n\n\n";
}
output.setText(data);
}catch (JSONException e){
e.printStackTrace();
}
}
},
new Response.ErrorListener(){
@Override
public void onErrorResponse(VolleyError error){
error.printStackTrace();
Toast.makeText(MainActivity.this, "No more Items Available",
Toast.LENGTH_LONG).show();
}
});
我曾尝试将其添加到 {}
中,就在最后一次收盘 )
之后,但这没有用。我试着把它放在 Response.Listener
里面,但也没有用。所以我有点困惑。
无论如何,我认为我正在制作 JsonArrayRequest 真的很奇怪,但是由于我的 REST API 正在接受 HTML & JSON 作为响应,Volley 似乎得到 HTML 响应而不是 JSON。这让我的应用程序中没有任何项目。这不是很奇怪吗?因为它是一个 JsonRequest,Request 不应该自己将 content-type 设置为 application/json 吗?我希望通过将 content-type 设置为 application/json 我将获得正确的响应类型。
您可以在请求结束时调用这些方法,然后中断;
JsonArrayRequest localJReq = new JsonArrayRequest(localURL,
new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
}) {//here before semicolon ; and use { }.
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
return super.getHeaders();
}
@Override
public String getBodyContentType() {
return super.getBodyContentType();
}
};