1
次のメソッドは正常に動作しますが、サーバーが403コードを返すと例外がスローされ、サーバーの応答が返されません。HttpUrlConnectionでデータが不正なhttpコードであっても取得403. 404など
public String ping(String lat, String lon)
{
StringBuffer response = null;
try
{
String url = "https://api.mysite.com";
URL urlObj = new URL(url);
HttpsURLConnection con = null;
if (useProxy)
{
con = (HttpsURLConnection) urlObj.openConnection(proxy);
}
else
{
con = (HttpsURLConnection) urlObj.openConnection();
}
// add reuqest header
con.setRequestMethod("POST");
con.setRequestProperty("User-Agent", USER_AGENT);
con.setRequestProperty("Content-Type", "application/json; charset=utf-8");
con.setRequestProperty("Host", urlObj.getHost());
con.setRequestProperty("Connection", "Keep-Alive");
// con.setRequestProperty("Accept-Encoding", "gzip");
String urlParameters = "{\"lat\":" + lat + ",\"lon\":" + lon + "}";
// Send post request
con.setDoOutput(true);
DataOutputStream wr = new DataOutputStream(con.getOutputStream());
wr.writeBytes(urlParameters);
wr.flush();
wr.close();
int responseCode = con.getResponseCode();
// System.out.println("\nSending 'POST' request to URL : " + url);
// System.out.println("Post parameters : " + urlParameters);
// System.out.println("Response Code : " + responseCode);
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String inputLine;
response = new StringBuffer();
while ((inputLine = in.readLine()) != null)
{
response.append(inputLine);
}
in.close();
// print result
// System.out.println(response.toString());
}
catch (Exception e)
{
e.printStackTrace();
}
return response.toString();
}
は、どのように私はこれがどんなサーバーが返すとサーバは403コード(またはその他の応答コード)で応答しても、サーバの応答を返さないことができますか?
私はあなたの質問が正しい場合、これがあなたが探しているものだと私は信じています。あなたは 'con.getResponseCode();'を使ってレスポンスコードをチェックすることができます。成功コード 'HttpURLConnection.HTTP_OK'なら' con.getInputStream() 'を使ってデータを読むことができます。そうでなければ' con.getErrorStream () 'を呼び出してエラーメッセージを読み込みます。 –