【问题标题】:How to send a String array as basic name value pair as HTTPPOST?如何将字符串数组作为基本名称值对发送为 HTTPPOST?
【发布时间】:2014-01-15 07:02:41
【问题描述】:

我想将数组作为名称值对发送为 httppost。我的服务器只接受数组值。以下是我的代码 sn-p..

public String SearchWithType(String category_name, String[] type,int page_no) {

    String url = "http://myURL";
    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
            .permitAll().build();
    StrictMode.setThreadPolicy(policy);

    String auth_token = Login.authentication_token;
    String key = Login.key;

    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost(url);

    try {
        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
        nameValuePairs.add(new BasicNameValuePair("authentication_token",
                auth_token));
        nameValuePairs.add(new BasicNameValuePair("key", key));
        nameValuePairs.add(new BasicNameValuePair("category_name",
                category_name));
        int i = 0;
        nameValuePairs.add(new BasicNameValuePair("type", type[i]));
        nameValuePairs.add(new BasicNameValuePair("page", String.valueOf(page_no)));

        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

        HttpResponse response = httpclient.execute(httppost);
        HttpEntity entity = response.getEntity();
        eu = EntityUtils.toString(entity).toString();

    } catch (IOException ioe) {
        String ex = ioe.toString();
        return ex;
    }

    return eu;
} 

【问题讨论】:

标签: java android json http


【解决方案1】:

我遇到了问题。方法如下:

try {
    int i = 0;

    List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
    nameValuePairs.add(new BasicNameValuePair("authentication_token", auth_token));
    nameValuePairs.add(new BasicNameValuePair("key", key));
    nameValuePairs.add(new BasicNameValuePair("category_name", category_name));
    nameValuePairs.add(new BasicNameValuePair("type", type[i]));
    nameValuePairs.add(new BasicNameValuePair("page", String.valueOf(page_no)));

    httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

    HttpResponse response = httpclient.execute(httppost);
    HttpEntity entity = response.getEntity();

    eu = EntityUtils.toString(entity).toString();
} catch (Exception e) {
    Log.e(TAG, e.toString());
}

我所要做的就是初始化一个循环:

for (int i = 0; i < type.length; i++) {
    nameValuePairs.add(new BasicNameValuePair("type[]",type[i]));
}

【讨论】:

【解决方案2】:
nameValuePairs.add(new BasicNameValuePair("type", Arrays.toString(type)));

【讨论】:

  • 我试过了,但它给出了数组的字符串解释......但是后端需要数组值而不是该数组的字符串解释
【解决方案3】:

从数组转换为字符串,然后使用http post发送,服务器端再次从字符串解析为数组

【讨论】:

    【解决方案4】:

    json_array = [{param1:"param1Value", param2:"param2Value"}] 如果你想发送一个带有 nameValuePairs 的 json 数组,你可以这样发送;

    new BasicNameValuePairs("param[0][param1]","param1Value")
    new BasicNameValuePairs("param[0][param2]","param2Value")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-04
      • 2018-12-03
      • 2023-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多