Android Volley请求返回状态代码200以响应成功,并要求以Json格式发送原始数据(正文)
我必须送Android Volley请求返回状态代码200以响应成功,并要求以Json格式发送原始数据(正文),android,json,httprequest,android-volley,jsonobjectrequest,Android,Json,Httprequest,Android Volley,Jsonobjectrequest,我必须送 { "200": {"username": "ppoo" , "password": "ppoo" , "emails": ["ppoo"] }, "400": [] } 在我的请求的原始正文中,它将在成功响应时给出状态代码200 如果我使用了JSONobjectrequest,那么它将显示VolleyParseError。我不知道该使用哪个请求 这里有完整的工作代码 pri
{ "200": {"username": "ppoo" ,
"password": "ppoo" ,
"emails": ["ppoo"] },
"400": [] }
在我的请求的原始正文中,它将在成功响应时给出状态代码200
如果我使用了JSONobjectrequest,那么它将显示VolleyParseError。我不知道该使用哪个请求 这里有完整的工作代码
private void LoginUser() {
try {jsonObject.put("password",hashpassword );jsonObject.put("username",username);} catch (JSONException e){e.printStackTrace();}
jsonStr =jsonObject.toString();
//json字符串变量保持这是您要发送的原始数据的字符串外观={“username”:“your user username”,“password”:“yourspassword”}//
RequestQueue RequestQueue=Volley.newRequestQueue(this);
StringRequest StringRequest=新StringRequest(Request.Method.POST,SignInUrl,
新的Response.Listener(){
@凌驾
公共void onResponse(字符串响应){
Toast.makeText(getBaseContext(),response.toString(),Toast.LENGTH_LONG).show();
hideProgressDialog();
}
},
新的Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
Log.e(“截击”,error.toString());
Toast.makeText(getBaseContext(),error.toString(),Toast.LENGTH_LONG).show();
}
}){
@凌驾
公共字符串getBodyContentType(){
返回“application/json;charset=utf-8”;
}
@凌驾
公共字节[]getBody(){
试一试{
返回jsonStr==null?null:jsonStr.getBytes(“utf-8”);
}捕获(不支持的编码异常uee){
wtf(“尝试使用%s获取%s的字节时不支持编码”,
jsonStr,“utf-8”);
返回null;
}
}
@凌驾
受保护的响应parseNetworkResponse(NetworkResponse响应){
字符串responseString=“”;
if(响应!=null){
responseString=String.valueOf(response.statusCode);
}
返回Response.success(responseString,HttpHeaderParser.parseCacheHeaders(Response));
}
@凌驾
公共映射getHeaders()引发AuthFailureError{
Map headers=newhashmap();
headers.put(“内容类型”、“应用程序/json;字符集=utf-8”);
返回标题;
}};
添加(stringRequest);
}将多行内联代码制成一个代码块。您是否使用post方法“?\n您收到的数据是什么样子的?@Jois我正在起诉post请求我没有收到任何只接收数据的状态代码
RequestQueue requestQueue = Volley.newRequestQueue(this);
StringRequest stringRequest = new StringRequest(Request.Method.POST, SignInUrl,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Toast.makeText(getBaseContext(),response.toString(), Toast.LENGTH_LONG).show();
hideProgressDialog();
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e("VOLLEY", error.toString());
Toast.makeText(getBaseContext(),error.toString(), Toast.LENGTH_LONG).show();
}
}){
@Override
public String getBodyContentType() {
return "application/json; charset=utf-8";
}
@Override
public byte[] getBody() {
try {
return jsonStr == null ? null : jsonStr.getBytes("utf-8");
} catch (UnsupportedEncodingException uee) {
VolleyLog.wtf("Unsupported Encoding while trying to get the bytes of %s using %s",
jsonStr, "utf-8");
return null;
}
}
@Override
protected Response<String> parseNetworkResponse(NetworkResponse response) {
String responseString = "";
if (response != null) {
responseString = String.valueOf(response.statusCode);
}
return Response.success(responseString, HttpHeaderParser.parseCacheHeaders(response));
}
@Override
public Map<String,String> getHeaders() throws AuthFailureError {
Map<String,String> headers = new HashMap<String, String>();
headers.put("Content-Type", "application/json; charset=utf-8");
return headers;
}};
requestQueue.add(stringRequest);