2

サーバーに POST 要求を送信すると、応答が 200 の場合、JSON 本文が取得されます。ただし、要求が失敗した場合、サーバーは 400 応答コードを送信しますが、私の Android コードは FileNotFoundException をスローします。400 応答と 200 応答の読み取りに違いはありますか?

        StringBuffer responseBuilder = new StringBuffer();
    String line = null;
    HttpURLConnection conn = null;
    OutputStream out = null;
    BufferedReader rd = null;
    System.setProperty("http.keepAlive", "false");
    try
    {
        conn = (HttpURLConnection) new URL(requestURL).openConnection();
        conn.setRequestMethod("POST");
        conn.setDoOutput(true);
        conn.setDoInput(true);
        conn.setUseCaches(false);
        conn.setAllowUserInteraction(false);
        conn.setConnectTimeout(NetworkConstants.CONNECTION_TIMEOUT);
        conn.setReadTimeout(NetworkConstants.SOCKET_TIMEOUT);

        out = conn.getOutputStream();
        Writer writer = new OutputStreamWriter(out, "UTF-8");
        String s = formatParams();
        Log.d("-------------------------------------------------->", s);
        writer.write(s);
        writer.flush();
        writer.close();
    }

    catch (Exception e)
    {

    }

    finally
    {
        if (out != null)
        {
            try
            {
                out.close();
            }
            catch (IOException e)
            {
                e.printStackTrace();

            }
        }
    }
    try
    {
        rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
        while ((line = rd.readLine()) != null)
        {
            responseBuilder.append(line);
            if (!rd.ready())
            {
                break;
            }
        }
    }
    catch (Exception e)
    {
        e.printStackTrace();
    }

    finally
    {
        if (conn != null)
        {
            conn.disconnect();
        }
    }

    String response = responseBuilder.toString();
    Log.d("@@@@@@@@@@@@@@@@@@@@@@@@@@@", response);
    return response;

敬具、

4

3 に答える 3

0

応答コードが 200 または 2xx でない場合は、getInputStream() の代わりに getErrorStream() を使用して json を解析し、バックエンドから提供されたメッセージを表示します。

于 2012-08-15T10:55:47.337 に答える