4

http post リクエストを PHP サービスに送信しようとしています。これは、いくつかのテストデータで入力がどのように見えるかの例です ここに画像の説明を入力

PHP 連想配列に代わる Java の代替手段が HashMap であることは知っていますが、NameValuePairs でこれを実行できるのでしょうか? この入力をフォーマットし、投稿リクエストを介して PHP サービスを呼び出す最良の方法は何ですか?

4

2 に答える 2

4

@Sash_KP の回答を拡張すると、次のように nameValuePairs を投稿することもできます。

params.add(new BasicNameValuePair("Company[name]", "My company"));
params.add(new BasicNameValuePair("User[name]", "My Name"));
于 2014-09-08T03:16:55.607 に答える
2

はい、これはで行うことができますNameValuePair。次のようなものを持つことができます

List<NameValuePair> params;
//and when making `HttpPost` you can do 
HttpPost httpPost = new HttpPost("Yoururl");
httpPost.setEntity(new UrlEncodedFormEntity(params));

//and while building parameters you can do somethin like this 
params.add(new BasicNameValuePair("name", "firemanavan"));
params.add(new BasicNameValuePair("cvr", "1245678"));
....

これは、使用できるきちんとした優れた解析方法です。

public JSONObject getJSONFromUrl(String url, List<NameValuePair> params) {
    InputStream is = null;
    String json = "";
    JSONObject jObj = null;

    // Making HTTP request
    try {

        DefaultHttpClient httpClient = new DefaultHttpClient();
        HttpPost httpPost = new HttpPost(url);
        httpPost.setEntity(new UrlEncodedFormEntity(params));

        HttpResponse httpResponse = httpClient.execute(httpPost);
        HttpEntity httpEntity = httpResponse.getEntity();
        is = httpEntity.getContent();

    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    } catch (ClientProtocolException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

    try {
        BufferedReader reader = new BufferedReader(new InputStreamReader(
                is, "iso-8859-1"), 8);
        StringBuilder sb = new StringBuilder();
        String line = null;
        while ((line = reader.readLine()) != null) {
            sb.append(line + "\n");
        }
        is.close();
        json = sb.toString();
        Log.e("JSON", json);
    } catch (Exception e) {
        Log.e("Buffer Error", "Error converting result " + e.toString());
    }

    // try parse the string to a JSON object
    try {
        jObj = new JSONObject(json);
    } catch (JSONException e) {
        Log.e("JSON Parser", "Error parsing data " + e.toString());
    }


    return jObj;

} 

そして、あなたは単にそれを次のように使うことができます

getJSONFromUrl("YourUrl", params);

これは、 を使用してこれを実現する方法の基本的なアイデアにすぎNameValuePairません。希望どおりに実装するには、さらにいくつかの回避策が必要になりますが、これで基本的なアイデアが得られるはずです。これがお役に立てば幸いです。

于 2014-09-07T22:43:20.203 に答える