2017-06-20 165 views
-3

由于所有旧的方法已被弃用,如HTTP POST,响应,HTTP客户端,字符串实体等,我想知道我怎么能发布JSON数据到2017年的Android服务器。我的应用程序应该注册或发送JSON使用POST方法将数据(如电子邮件,联系电话和密码)发送到服务器,然后服务器将提供JSON响应,例如状态,消息和名为data的数组。数据是只有2个对象的数组(即令牌和电子邮件)。请帮忙。如何将JSON数据发送到android中的服务器?

+0

使用改装,排或HttpURLConnection的 – Anil

+0

你试过什么了? – TriskalJM

+0

可以提供代码,这将是非常有益的。我尝试过抽球,但我不知道如何发送JSON,而我只能得到正确的响应,但无法注册。 – kloss91

回答

0

尝试这样

private void registerUser(){ 
    final String username = editTextUsername.getText().toString().trim(); 
    final String password = editTextPassword.getText().toString().trim(); 
    final String email = editTextEmail.getText().toString().trim(); 

    StringRequest stringRequest = new StringRequest(Request.Method.POST, REGISTER_URL, 
      new Response.Listener<String>() { 
       @Override 
       public void onResponse(String response) { 
        Toast.makeText(MainActivity.this,response,Toast.LENGTH_LONG).show(); 
       } 
      }, 
      new Response.ErrorListener() { 
       @Override 
       public void onErrorResponse(VolleyError error) { 
        Toast.makeText(MainActivity.this,error.toString(),Toast.LENGTH_LONG).show(); 
       } 
      }){ 
     @Override 
     protected Map<String,String> getParams(){ 
      Map<String,String> params = new HashMap<String, String>(); 
      params.put(KEY_USERNAME,username); 
      params.put(KEY_PASSWORD,password); 
      params.put(KEY_EMAIL, email); 
      return params; 
     } 

    }; 

    RequestQueue requestQueue = Volley.newRequestQueue(this); 
    requestQueue.add(stringRequest); 
} 
+0

之前尝试过,没有工作,因为它不发送json数据bro。 – kloss91

+0

你还试过排球吗?你会得到什么错误? – Dhanumjay

+0

代码没有错误,只是无法注册。我不知道如何在发送时将数据编码为json。我也用hashmaps。 – kloss91

0

使用凌空做下面的链接查看的例子。 volley example

创建一个RequestQueue类的对象。

RequestQueue queue = Volley.newRequestQueue(this); 

与响应和错误监听创建StringRequest。

StringRequest sr = new StringRequest(Request.Method.POST,"http://api.someservice.com/post/comment", new Response.Listener<String>() { 
    @Override 
    public void onResponse(String response) { 
     mPostCommentResponse.requestCompleted(); 
    } 
}, new Response.ErrorListener() { 
    @Override 
    public void onErrorResponse(VolleyError error) { 
     mPostCommentResponse.requestEndedWithError(error); 
    } 
}){ 
    @Override 
    protected Map<String,String> getParams(){ 
     Map<String,String> params = new HashMap<String, String>(); 
     params.put("user",userAccount.getUsername()); 
     params.put("pass",userAccount.getPassword()); 
     params.put("comment", Uri.encode(comment)); 
     params.put("comment_post_ID",String.valueOf(postId)); 
     params.put("blogId",String.valueOf(blogId)); 

     return params; 
    } 

    @Override 
    public Map<String, String> getHeaders() throws AuthFailureError { 
     Map<String,String> params = new HashMap<String, String>(); 
     params.put("Content-Type","application/x-www-form-urlencoded"); 
     return params; 
    } 
}; 
  • 添加您的要求转化到请求队列。
queue.add(jsObjRequest); 
1

我想你需要尝试循环J库发送JSON数据
you can try this link 并且也很容易已了解 You can try another link

try{ 

     AsyncHttpClient client = new AsyncHttpClient(); 
     JSONObject obj = new JSONObject(); 

     obj.put("email",email); 
     obj.put("contact_number",contact_number); 
     obj.put("password",password); 
     entity = new StringEntity(obj.toString()); 

     client.post(getApplicationContext(), "Your_URL", entity, "application/json", new TextHttpResponseHandler() { 
      @Override 
      public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) { 
       Log.d("LoginActivity","Failed"); 
       Log.d("LoginActivity","body " + responseString); 
      } 

      @Override 
      public void onSuccess(int statusCode, Header[] headers, String responseString) { 
       Log.d("LoginActivity","data " + responseString); 
       try { 
        JSONObject respObj = new JSONObject(responseString); 
        String data = respObj.toString(); 
        Log.d("LoginActivity","Data : " + data); 
       } catch (JSONException e) { 
        e.printStackTrace(); 
       } 
      } 
     }); 
    }catch (Exception ex){ 
     Log.d("LoginActivity","Getting Exception "+ex.toString()); 
    } 
相关问题