この質問は何度も尋ねられました。私は数多くの例(Java - sending HTTP parameters via POST method easily)とブログをすべて成功せずに試してみました。AndroidはPOSTを使用してJSONを送信します
私はこの方法で私のサービスへの呼び出しを行うための
//POST
public static void MakeRequest(String uri, String data, boolean isError) {
try {
Log.i(TAG, data);
Log.i(TAG, uri);
byte[] bytes =data.getBytes();
// 2. make Connection
HttpURLConnection urlConnection = (HttpURLConnection) ((new URL(uri).openConnection()));
urlConnection.setRequestMethod("POST");
urlConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
urlConnection.setRequestProperty("charset", "utf-8");
urlConnection.setRequestProperty("Content-Length", "" + Integer.toString(bytes.length));
urlConnection.setInstanceFollowRedirects(false);
urlConnection.setDoOutput(true);
urlConnection.setUseCaches (false);
DataOutputStream wr = new DataOutputStream(urlConnection.getOutputStream());
wr.write(bytes);
Log.i(TAG, "after send?");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
を持っています。私がPostmanと一緒にテストしてきたので、サービスは正常に動作します。私のAndroid/Javaに関する知識が限られているため、上記のことがうまくいかない理由を理解するのが難しいです。私はデバッガを通ってきてエラーはスローされず、正しいURLが使用されます。 私が理解できないことは、サービスが決して到達していない理由です。
あなたは 'wr.close()'を追加しようとしましたか? – Dimitris
私は持っています。私はまた、接続を開こうとしました。 (urlConnection.connect())、おそらく必要はありません。私はフィドラーを発砲し、私が思ったようにそれはサービスに出ていない。 –
data.getBytes(Charset.forName( "UTF-8"))を少し変更して、上記の行を追加したい場合があります。どのようなエラーが表示されますか? – Dimitris