2

ユーザーがログインボタンをクリックしたときに、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だけを表示できました。任意の提案をいただければ幸いです。

4

0 に答える 0