qq_27074467
2016-06-14 08:32
采纳率: 37.5%
浏览 11.1k
已采纳

Okhttp怎样使用post向服务器提交数组

"containedParcels"=>[
 {"parcelNum": "aaa"},
 {"parcelNum": "bbb"},
 {"parcelNum": "ddd"}
]
    像这种数据我要怎样使用post发送请求
  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • oyljerry 2016-06-14 08:40
    已采纳

    json数组外面有一个中括号

     "containedParcels"=>{[
     {"parcelNum": "aaa"},
     {"parcelNum": "bbb"},
     {"parcelNum": "ddd"}
    ]}
    
    private static JSONArray createJSONObject() {
    try {
    JSONObject jsonObject = new JSONObject();
    jsonObject.put("picData","kefkbvbsrkbuenakcsk");
    jsonObject.put("index","0");
    // 返回一个JSONArray对象
    JSONArray jsonArray = new JSONArray();
    jsonArray.put(0,jsonObject)
    Log.i("jsonArray",jsonArray.toString())
    return jsonArray;
    } catch (JSONException e) {
    e.printStackTrace();
    return null;
    }
    }
    
    
    RequestBody body = RequestBody.create(JSON,createJSONObject().toString());
    Request request = new Request.Builder()
    .url(url)
    .post(body)
    .build();
    private OkHttpClient client = new OkHttpClient();
    Response response = client.newCall(request).execute();
    
    
    已采纳该答案
    评论
    解决 无用 1
    打赏 举报
  • AAA啊哈 2016-08-31 10:42

    后台小哥老坑老坑的,不让我传 Json 让传 string[] ,也google Okhttp 的发送,可以说没有这个解决方法,下面是我跟后台小哥联调测出来的成功方法:
    把String[] arrayData拼接成一个 字符串,比如 "one,two,three" 这种形式:

      public String getToString(String[] arrayData) {
        StringBuilder stringBuilder = new StringBuilder();
        for (int i = 0 ; i < arrayData.length; i++) {
            stringBuilder.append(arrayData[i]);
            if (i < arrayData.length - 1) {
                stringBuilder.append(",");
            }
        }
        return stringBuilder.toString();
    }
    

    再传值:

    .addParams("arraydata", getToString(arrayData))

    传到后台,后台会根据 逗号 自己转化为 string[] 格式的。

    评论
    解决 6 无用
    打赏 举报
  • devmiao 2016-06-14 08:53
     public class MainActivity extends AppCompatActivity {
    
    public static final String TAG = "MainActivity";
    public static final MediaType JSON=MediaType.parse("application/json; charset=utf-8");
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //开启一个线程,做联网操作
        new Thread() {
            @Override
            public void run() {
    
             postJson();
            }
        }.start();
    }
    
     private void postJson() {
        //申明给服务端传递一个json串
        //创建一个OkHttpClient对象
        OkHttpClient okHttpClient = new OkHttpClient();
        //创建一个RequestBody(参数1:数据类型 参数2传递的json串)
        RequestBody requestBody = RequestBody.create(JSON, json);
        //创建一个请求对象
        Request request = new Request.Builder()
                .url("http://192.168.0.102:8080/TestProject/JsonServlet")
                .post(requestBody)
                .build();
        //发送请求获取响应
        try {
        Response response=okHttpClient.newCall(request).execute();
            //判断请求是否成功
            if(response.isSuccessful()){\
                //打印服务端返回结果
                Log.i(TAG,response.body().string());
    
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    
    }
    
    }
    
    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题