Попытка опубликовать JSON в 10.0.2.2:1080 из AVD, и он всегда возвращает Bad Request и FileNotFoundException - PullRequest
0 голосов
/ 07 июля 2019

Я хочу отправить данные JSON на мой локальный сервер.Запрос curl, который я помещаю в «Git Bash», возвращает желаемый результат, в то время как на CMD он возвращает неверный запрос.

Теперь, в студии android, когда я запускаю свой код.Читатель с буферизацией всегда перехватывает «FileNotFoundException», включая «Неверный запрос» и «Неверный URL».

Я уже пробовал несколько решений на форуме, таких как включение свойства запроса: (Я также совершенно не понимаю этот запроссвойство tbh)

    conn.setRequestProperty("User-Agent","Mozilla/5.0 ( compatible ) ");
    conn.setRequestProperty("Accept","*/*");

Я также пытался использовать устаревшие синтаксисы, такие как HttpClient, но в результате все тот же неправильный запрос.

Я присоединяю функцию, HttpPost, которая возвращаетСтрока в методе doInBackground в моем классе:

private String HttpPost(String[] params) throws IOException, JSONException {
    String result = "";
    String urlPost = "http://10.0.2.2:1080/claim/sustenance";
    URL url = new URL(urlPost);

    // create HttpURLConnection
    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    conn.setRequestMethod("POST");
    conn.setRequestProperty("User-Agent","Mozilla/5.0 ( compatible ) ");
    conn.setRequestProperty("Accept","*/*");
    conn.setRequestProperty("Content-Type", "application/cfp+json");
    conn.setRequestProperty("Accept-Charset", "UTF-8");
    //conn.setRequestProperty("Accept", "application/json");
    conn.setDoOutput(true);

    // build JSON object
    JSONObject jsonObject = buildJsonObject(params);
    String jsonString = jsonObject.toString();
    // add JSON content to POST request body
    try(OutputStream os = conn.getOutputStream()) {
        byte[] input = jsonString.getBytes("utf-8");
        os.write(input, 0, input.length);
    }

    try(BufferedReader br = new BufferedReader(
            new InputStreamReader(conn.getInputStream(), "utf-8"))) {
        StringBuilder response = new StringBuilder();
        String responseLine = null;
        while ((responseLine = br.readLine()) != null) {
            response.append(responseLine.trim());
        }
        return response.toString();
    }
}

Я ожидаю ответ JSON от моего запроса, но он не приходит вообще.Пожалуйста, помогите мне решить эту проблему.

...