Как разместить необработанные данные, используя залп - PullRequest
0 голосов
/ 02 июля 2019

Мой API работает правильно, но когда я отправляю данные с помощью приложения Android, он не вставляет данные.

btn.setOnClickListener(new View.OnClickListener() {
        @Override       
 public void onClick(View v) { JSONObject jsonBody = new JSONObject();
            try {
             `jsonBody.put("ID", "Android Volley Demo");
                jsonBody.put("Name", "BNK");
                final String requestBody = jsonBody.toString();
           StringRequest stringRequest=new StringRequest(Request.Method.POST, URL,
                        new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {
                        Log.i("VOLLEY", response);
                    }
                },
                        new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        Log.e("VOLLEY", error.toString());
                    }
                }) {
                    @Override
                    public String getBodyContentType() {
                        return "application/json; charset=utf-8";
                    }
                    @Override
                    public byte[] getBody() throws AuthFailureError {
                        try {
                            return requestBody == null ? null : requestBody.getBytes("utf-8");
                        } catch (UnsupportedEncodingException uee) {
                            VolleyLog.wtf("Unsupported Encoding while trying to get the bytes of %s using %s", requestBody, "utf-8");
                            return null;
                        }
                    }
                };
                requestQueue.add(stringRequest);

            } catch (JSONException e) {
                e.printStackTrace();
            }
         }


      });
   }
}

Это мой API. Он работает правильно.

public HttpResponseMessage Post([FromBody]Login log)
    {
            db.Logins.Add(log);
            db.SaveChanges();

            var message = Request.CreateResponse(HttpStatusCode.Created, log);

            message.Headers.Location = new Uri(Request.RequestUri + log.ID.ToString());

            return message;
    }

Это мойКод Я отправляю данные, но не вставляю в SQL Server, но когда я тестирую API, отправляя необработанные данные, он работает правильно.

Ответы [ 2 ]

0 голосов
/ 02 июля 2019

Отметьте это

try {
RequestQueue requestQueue = Volley.newRequestQueue(this);
String URL = "http://...";
JSONObject jsonBody = new JSONObject();
jsonBody.put("firstkey", "firstvalue");
jsonBody.put("secondkey", "secondobject");
final String mRequestBody = jsonBody.toString();

StringRequest stringRequest = new StringRequest(Request.Method.POST, URL, new Response.Listener<String>() {
    @Override
    public void onResponse(String response) {
        Log.i("LOG_VOLLEY", response);
    }
}, new Response.ErrorListener() {
    @Override
    public void onErrorResponse(VolleyError error) {
        Log.e("LOG_VOLLEY", error.toString());
    }
}) {
    @Override
    public String getBodyContentType() {
        return "application/json; charset=utf-8";
    }

    @Override
    public byte[] getBody() throws AuthFailureError {
        try {
            return mRequestBody == null ? null : mRequestBody.getBytes("utf-8");
        } catch (UnsupportedEncodingException uee) {
            VolleyLog.wtf("Unsupported Encoding while trying to get the bytes of %s using %s", mRequestBody, "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));
    }
};

requestQueue.add(stringRequest);
} catch (JSONException e) {
 e.printStackTrace();
}
0 голосов
/ 02 июля 2019

Попробуйте это:

StringRequest stringRequest = new StringRequest(Request.Method.POST, URL,
                        new Response.Listener<String>() {
                            @Override
                            public void onResponse(String ServerResponse) {
                                Log.i("VOLLEY Response : ", ServerResponse);
                            }
                        },
                        new Response.ErrorListener() {
                            @Override
                            public void onErrorResponse(VolleyError volleyError) {
                                Log.e("VOLLEY ErrorResponse : ", volleyError.toString());
                            }
                        }) {
                    @Override
                    protected Map<String, String> getParams() {
                        Map<String, String> params = new HashMap<String, String>();
                        params.put("Name", "BNK");
                        return params;
                    }

                };

            // Creating RequestQueue.
            RequestQueue requestQueue = Volley.newRequestQueue(context);

            // Adding the StringRequest object into requestQueue.
            requestQueue.add(stringRequest);
...