現在の戦術に苦労しているので、Java / Androidでネットワーク呼び出しを行うための何らかの一般的な方法があるかどうか疑問に思っていました。私は現在これを試しています:
public static File synchronousConnection(String url, String requestMethod, byte[] requestData, Map<String, String> headers)
{
File returnData = null;
try
{
URL url = new URL(url);
HttpURLConnection connection = (HttpURLConnection)url.openConnection();
connection.setDoInput(true);
connection.setDoOutput(true);
connection.setRequestMethod(requestMethod);
if(requestData != null && requestData.length > 0)connection.setRequestProperty("Content-Length", Integer.toString(requestData.length));
if(headers != null)for(String key : headers.keySet())connection.setRequestProperty(key, headers.get(key));
//connection.connect();
if(requestData != null && requestData.length > 0)
{
DataOutputStream outputStream = new DataOutputStream(connection.getOutputStream());
outputStream.write(requestData);
outputStream.flush();
outputStream.close();
}
//String response = inputStreamToString(url.openStream());
//System.out.println("Response: " + response);
int statusCode = connection.getResponseCode();
connection.disconnect();
System.out.println("Status code: " + statusCode);
//returnData = response;
}
catch(IOException e)
{
System.out.println("IO Exception in connections\n" + e.getLocalizedMessage());
e.printStackTrace();
}
catch(Exception e)
{
System.out.println("Invalid information for network connection\n" + e.getLocalizedMessage());
e.printStackTrace();
}
return returnData;
}
他の例にあったとしても、プロセスを妨害したり、問題を引き起こしたりするように見えたので、かなりの数のコンポーネントをコメントアウトしました。に関してはinputStreamToString(InputStream)
、それはまさにそれが言うことをするための私の方法の1つです.
関数への入力パラメーターが与えられた場合、URL 接続への一般的な方法はありますか? 現在、接続を機能させるのに本当に苦労しており、リクエストごとにカスタムの方法で処理を行わなければならないのは奇妙です。POST
また、 API が応答本文を返す場合でも、要求から応答データを取得できないようです。