1

私はプロジェクトを開発しています。私はウェブページにjqueryを使用して書いています:

$.post(url, {param: paramstring}, function(result){});

Paramstringは、のようなパラメータ構造に従ったjson文字列{"action":"get","username":"username"}です。Androidで実行し、ページに2つのtextviewを追加して、ユーザー名とパスワードを入力します。登録ボタンもあります。ボタンリスナープログラムは次のようなものです。

EditText et1 = (EditText)findViewById(R.id.username);
String user = et1.getText().toString();
EditText et2 = (EditText)findViewById(R.id.pass);
String password = et2.getText().toString();
// the password should upload after MD5 encryption. this is encryption method. the result is the same with js encryption.
String password_md5 = toMd5(password.getBytes());   
Log.d(TAG, user+"-"+password+"-"+password_md5);
try {
HttpPost request = new HttpPost(URL);
JSONObject params = new JSONObject();
params.put("action", "get");
params.put("result", "user");
params.put("category", "base");
params.put("username", user);
params.put("password", password_md5);

List<BasicNameValuePair> sendData = new ArrayList<BasicNameValuePair>();
sendData.add(new BasicNameValuePair("param", params.toString()));

System.out.println(params.toString());

request.setEntity(new UrlEncodedFormEntity(sendData,"utf-8"));
System.out.println(EntityUtils.toString(request.getEntity()));

HttpResponse response= new DefaultHttpClient().execute(request);
String retSrc = EntityUtils.toString(response.getEntity()); 

System.out.println(retSrc);

} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}   

上記のコードはログインエラーを表示するデータを返します。json構造によるものと思います。{param:paramstr}in$.post()メソッドはマップです。私は何度もそれを変えました、それはまだ間違っています。

アドバイスをいただけますか?どうもありがとう!

4

1 に答える 1

1

各パラメーターを個別に渡す必要があり、ここでは JSON 構造は必要ありません。jQuery で使用される JSON 構造は、$.post() メソッドに可変数のパラメーターを持たせるための単なるメソッドです。

これの代わりに:

params.put("action", "get");
params.put("result", "user");
params.put("category", "base");
params.put("username", user);
params.put("password", password_md5);

List<BasicNameValuePair> sendData = new ArrayList<BasicNameValuePair>();
sendData.add(new BasicNameValuePair("param", params.toString()));

これを試して:

List<BasicNameValuePair> sendData = new ArrayList<BasicNameValuePair>();
sendData.add(new BasicNameValuePair("action", "get"));
sendData.add(new BasicNameValuePair("result", "user"));
sendData.add(new BasicNameValuePair("category", "base"));
sendData.add(new BasicNameValuePair("username", user));
sendData.add(new BasicNameValuePair("password", password_md5));

ご覧のとおり、JSON オブジェクトの代わりに、sendData リストが使用されています。

于 2012-12-26T09:15:45.660 に答える