2017-10-14 519 views
0

下面给出实施的时候不就是我用它来发送POST请求使用OkHttp当类:错误代码400执行时凌空POST请求,但OkHttp

public class PostExample { 
private static final MediaType JSON 
     = MediaType.parse("application/json;"); 

private OkHttpClient client = new OkHttpClient(); 

String post(String url, String json) throws IOException { 
    RequestBody body = RequestBody.create(JSON, json); 
    Request request = new Request.Builder() 
      .url(url) 
      .post(body) 
      .build(); 
    try (Response response = client.newCall(request).execute()) { 
     return response.body().string(); 
    } 
} 

String bowlingJson(String user, String password) { 
    String str = "{" + 
      "\"username\": \"" + user + "\", " + 
      "\"password\": \"" + password + "\"" + 
      "}"; 
    System.out.println(str); 
    return str; 
} 

public static void main(String[] args) throws IOException { 
    PostExample example = new PostExample(); 
    String json = example.bowlingJson(args[0], args[1]); 
    String response = example.post("http://192.168.43.123:8000/api/jwt-auth/", json); 
    System.out.println(args[0] + " " + args[1]); 
    System.out.println(response); 
} 
} 

这工作得很好,它给了我一个JSON对象作为响应中的一个字符串。 以及下面给出的是几乎同样的事情凌空使用时,只是说这是给我一个400错误

公共类PostAssistant区别{

private Context context; 
    private RequestQueue queue; 

    public PostAssistant(Context context) { 
     this.context = context; 
     queue = Volley.newRequestQueue(context); 
    } 

    private void post(String url, final String user , final String password) throws IOException { 
     StringRequest postRequest = new StringRequest(Request.Method.POST, url, 
       new Response.Listener<String>() 
       { 
        @Override 
        public void onResponse(String response) { 
         // response 
         Log.d("Response", response); 
        } 
       }, 
       new Response.ErrorListener() 
       { 
        @Override 
        public void onErrorResponse(VolleyError error) { 
         // error 
         Log.d("Error.Response", ""); 
        } 
       } 
     ) 
     { 
      @Override 
      protected Map<String, String> getParams() 
      { 
       Map<String, String> params = new HashMap<>(); 
       params.put("username", user); 
       params.put("password", password); 

       return params; 
      } 

      @Override 
      public String getBodyContentType() 
      { 
       return "application/json"; 
      } 
     }; 
     queue.add(postRequest); 
    } 

    private void connect(String user, String password) throws IOException { 
     post(Constants.loginUrl , user , password); 
    } 

    public void connect(String[] args) throws IOException { 
     connect(args[0] , args[1]); 
    } 
} 

这是因为在logcat中所示的错误:

E/Volley: [5322] BasicNetwork.performRequest: Unexpected response code 400 for http://192.168.43.123:8000/api/jwt-auth/ 

回答

0

我通过改变getBodyContentType()getHeaders()

 @Override 
     public Map<String , String> getHeaders() 
     { 
      Map<String, String> params = new HashMap<String, String>(); 
      params.put("Content-Type", "application/json"); 
      return params; 
     } 
固定它
相关问题