如何在android中向服务器发送JSON数据?

如何在android中向服务器发送JSON数据?,android,json,Android,Json,由于所有旧方法都已被弃用,如http post、response、http client、string entity等,我想知道2017年如何将json数据发布到android服务器上。我的应用程序应该使用POST方法向服务器注册或发送JSON数据,如电子邮件、联系人号码和密码,然后服务器将给出JSON响应,如状态、消息和名为数据的数组。数据是仅由2个对象(即令牌和电子邮件)组成的数组。请帮忙 像这样试试看 private void registerUser(){ final S

由于所有旧方法都已被弃用,如http post、response、http client、string entity等,我想知道2017年如何将json数据发布到android服务器上。我的应用程序应该使用POST方法向服务器注册或发送JSON数据,如电子邮件、联系人号码和密码,然后服务器将给出JSON响应,如状态、消息和名为数据的数组。数据是仅由2个对象(即令牌和电子邮件)组成的数组。请帮忙

像这样试试看

    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);
}
private void registerUser(){
最终字符串用户名=editTextUsername.getText().toString().trim();
最终字符串密码=editTextPassword.getText().toString().trim();
最终字符串email=editTextEmail.getText().toString().trim();
StringRequest StringRequest=新建StringRequest(Request.Method.POST,REGISTER\u URL,
新的Response.Listener(){
@凌驾
公共void onResponse(字符串响应){
Toast.makeText(MainActivity.this,response,Toast.LENGTH_LONG.show();
}
},
新的Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
Toast.makeText(MainActivity.this,error.toString(),Toast.LENGTH_LONG.show();
}
}){
@凌驾
受保护的映射getParams(){
Map params=新的HashMap();
参数put(KEY_用户名、用户名);
参数put(钥匙密码、密码);
参数put(钥匙、电子邮件、电子邮件);
返回参数;
}
};
RequestQueue RequestQueue=Volley.newRequestQueue(this);
添加(stringRequest);
}

使用凌空截击来完成下面的链接检查示例

创建RequestQueue类的对象

创建带有响应和错误侦听器的StringRequest


我认为您需要尝试使用Loopj库来发送Json数据
而且很容易理解


请使用改型、截击或httpurlconnection提供代码,这将非常有用。我尝试过截取,但我不知道如何发送json,而我只能正确获得响应,但无法注册。之前尝试过,但不起作用,因为它没有发送json数据兄弟。你也尝试过截取吗?那么,您会遇到什么错误?代码中没有错误,只是无法注册。我不知道在发送时如何将数据编码为json。我还使用了hashmaps。
 RequestQueue queue = Volley.newRequestQueue(this);
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);
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());
    }