ユーザーがログインボタンをクリックしたときに、URLアドレスに情報を追加する必要があるログイン画面があります。これは過去のデータの私のコードです:
private String postData() {
HttpClient httpClient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(PropertyManager.getLoginURL());
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(4);
nameValuePairs.add(new BasicNameValuePair("u", Uri.encode(PropertyManager.getUserId())));
nameValuePairs.add(new BasicNameValuePair("p", Encryption.encrypt(PropertyManager.getPassword())));
nameValuePairs.add(new BasicNameValuePair("v", PropertyManager.VER));
nameValuePairs.add(new BasicNameValuePair("t", "0"));
try {
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpClient.execute(httppost);
String responseBody = EntityUtils.toString(response.getEntity());
Log.i("Server Response 1: ", responseBody);
if (response.containsHeader("Set-Cookie")) {
PropertyManager.setSessionID(extractSessionId(response.getHeaders("Set-Cookie")[0].getValue()));
}
return responseBody;
} catch(UnsupportedEncodingException usee) {
usee.printStackTrace();
} catch(ClientProtocolException cpe) {
cpe.printStackTrace();
} catch(IOException ioe) {
ioe.printStackTrace();
}
return null;
}
実際、この方法は、デバイスがWiFiと3Gを介してインターネットに接続されている場合に正常に機能します。ただし、1つのデバイス(Sony Ericson-Xperia)が3Gに接続されている場合(WiFiは問題ありません)、サーバーはナンセンスな応答を送信します。
詳細パラメータを使用して接続アドレスを確認する必要があります。私はこのコードを書きました:
Log.i("Requestd Connection", httppost.getURI().toString());
ただし、nameValuePairsパラメーターなしで自分のURLだけを表示できました。任意の提案をいただければ幸いです。