сообщение об ошибке для запроса PUT в приложении android - PullRequest
0 голосов
/ 25 февраля 2020

Я разрабатываю приложение Android, которое должно отправлять запрос PUT на локальный сервер, и когда я пытаюсь выполнить тот же запрос с помощью curl, я получаю ответ об успешном выполнении, но из приложения Android я получить ошибку с PUT запросом, вот запрос как от мобильного приложения, так и curl, я прослушал оба запроса на моем P C, используя netcat

user@Laptop:~$ nc -l 192.168.1.104 55555
PUT /api/relay/0 HTTP/1.1
Host: 192.168.1.104:55555
User-Agent: curl/7.58.0
Accept: application/json
Content-Length: 31
Content-Type: application/x-www-form-urlencoded

apikey=2E5DE48567FB10F2&value=1


user@Laptop:~$ nc -l 192.168.1.104 55555
PUT /api/relay/0 HTTP/1.1
Accept: application/json
Content-Type: application/json; charset=utf-8
User-Agent: Dalvik/2.1.0 (Linux; U; Android 9; HRY-LX1MEB Build/HONORHRY-LX1MEB)
Host: 192.168.1.104:55555
Connection: Keep-Alive
Accept-Encoding: gzip
Content-Length: 31

apikey=2E5DE48567FB10F2&value=1

вот мой android java request

public void jsonRequestVolley(int method, String url, String requestBody) {         
        RequestQueue queue = Volley.newRequestQueue(context); 

        JsonObjectRequest jsonRequest = new JsonObjectRequest(   
                method,                           
                url,                                            
                requestBody,
                successResponse(),  
                errorResponse()   
        )  
        {

            /**
             * Passing some request headers
             * */
            @Override
            public Map<String, String> getHeaders() {
                HashMap<String, String> headers = new HashMap<String, String>();
                headers.put("Accept", "application/json");
                return headers;
            }

        };

        queue.add(jsonRequest);
    }   

рабочая команда curl

curl -X PUT -H "Accept: application/json" http://192.168.1.105:55555/api/relay/0 --data "apikey=2E5DE48567FB10F2&value=1"```

1 Ответ

0 голосов
/ 26 февраля 2020

Я исправил заголовок из-за требований к локальному серверу, теперь он работает так:

PUT /api/relay/0 HTTP/1.1
Accept: application/json
Content-Type: application/x-www-form-urlencoded
User-Agent: Dalvik/2.1.0 (Linux; U; Android 9; HRY-LX1MEB Build/HONORHRY-LX1MEB)
Host: 192.168.1.104:55555
Connection: Keep-Alive
Accept-Encoding: gzip
Content-Length: 31

Я добавил следующее к Android коду

@Override
            public Map<String, String> getHeaders() {
                HashMap<String, String> headers = new HashMap<String, String>();

                headers.put("Accept", "application/json");
                return headers;
            }

@Override
            public String getBodyContentType() {
                return "application/x-www-form-urlencoded";
            }

все в запросе код.

...