Как получить данные из WebApi2 с помощью Android volley с типом содержимого и параметрами?

#android #json #model-view-controller #asp.net-web-api #android-volley

#Android #json #модель-представление-контроллер #asp.net-web-api #android-volley

Вопрос:

Как я могу подключиться к серверу с Android Volley и получать данные в формате JSON или XML из WebApi2 с определением HTTP заголовков типа содержимого как application / json и принять как application / JSON?

У меня есть простой метод HttpPost в WebApi2, подобный этому:

     [HttpPost]
    public String GetData([FromBody]string data)
    {            
        return data;
    }
  

Как вы можете видеть, я использую Google extension Advanced REST client для тестирования метода, и он работает должным образом.
введите описание изображения здесь

Я установил заголовки HTTP и параметры, после чего отправил ответ сервера.

Теперь я хочу использовать Android Volley для подключения к серверу и получения данных, установив заголовки HTTP и параметры, но это не работает, и я просто получаю ошибку!

 public void HttpPOSTRequestWithParameters() {

    try {
        RequestQueue queue = Volley.newRequestQueue(getContext());

        JSONObject params = new JSONObject();
        params.put("data", "Hello World");

        JsonObjectRequest postRequest = new JsonObjectRequest(
                Request.Method.POST,
                "http://localhost:15369/api/Test/GetData",
                params,
                new Response.Listener<JSONObject>() {
                    @Override
                    public void onResponse(JSONObject response) {
                        Log.d("Response", response.toString());
                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        Log.d("ERROR", "error => "   error.toString());  
                    }
                }
        ) {
            @Override
            public Map<String, String> getHeaders() throws AuthFailureError {
                Map<String, String> headers = new HashMap<String, String>();
                headers.put("Content-Type", "application/json");
                headers.put("Accept", "application/json");
                return headers;
            }
        };

        queue.add(postRequest);
    } catch (JSONException e) {
        e.printStackTrace();
    }
}
  

это ошибка, которую я получаю:

com.android.volley.Ошибка сервера

Я обыскал весь Интернет и не смог найти никаких ответов, которые могли бы помочь мне исправить это.

заранее спасибо.

Ответ №1:

попробуйте вот так Map params = new HashMap params.put(«данные», «Привет, мир»);

затем по запросу here.Метод.СООБЩЕНИЕ,»http://localhost:15369/api/Test/GetData «, новый JSONObject (параметры)

Комментарии:

1. params.put(«Данные», «Привет, мир»);