0

HTTPClient の非推奨コードを変更しようとしていますが、常に i/o 例外が発生し、どこが間違っているのかわかりません。 古い非推奨のコード スニペット

  public JSONObject getJSONFromUrl(String address, String longUrl) {
     // Making HTTP request
     try {
        // DefaultHttpClient
        DefaultHttpClient httpClient = new DefaultHttpClient();
        HttpPost httpPost = new HttpPost(address);

        httpPost.setEntity(new StringEntity("{\"longUrl\":\"" + longUrl + "\"}"));
        httpPost.setHeader("Content-Type", "application/json");
        HttpResponse httpResponse = httpClient.execute(httpPost);

        HttpEntity httpEntity = httpResponse.getEntity();
        is = httpEntity.getContent();

    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    } catch (ClientProtocolException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

}

私の新しい動作しないコードスニペット

 try {
    HttpURLConnection httpcon = (HttpURLConnection) ((new          URL(address).openConnection()));
    httpcon.setDoOutput(true);
    httpcon.setRequestProperty("Content-Type", "application/json");
    httpcon.setRequestMethod("POST");
    httpcon.connect();

 //   byte[] outputBytes = "{'value': 7.5}".getBytes("UTF-8");
   is = httpcon.getInputStream();
 /*   os.write(outputBytes);

    os.close();*/
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    } catch (ClientProtocolException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
    catch (Exception e) {
        e.printStackTrace();
    }
4

1 に答える 1

0

最初に、まだ送信していない URL にパラメーター値を送信する必要があります。

 OutputStream out = conn.getOutputStream();
            BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(out, "UTF-8"));
            writer.write(--SENDING PARAMETER HERE--);
            writer.flush();
            writer.close();
            out.close();

次に、bufferedReader を使用して応答を取得します。

BufferedReader in = new BufferedReader(new InputStreamReader(
                    conn.getInputStream(), "UTF-8"));

そして、次のように応答を受け取ります。

while ((inputLine = in.readLine()) != null) 
{
    Log.d("finalResponse: ", inputLine);
}

inputLine データ型を応答のデータ型に設定します。送信するパラメーターが、API/URL が受信するように設定されている形式であることを確認してください。

はい、BufferedReading を閉じて URLConnection を切断することを忘れないでください。

in.close();
httpcon.disconnect();

これが役立つことを願っています。ハッピーコーディング。

于 2015-09-02T10:25:37.870 に答える