"containedParcels"=>[
{"parcelNum": "aaa"},
{"parcelNum": "bbb"},
{"parcelNum": "ddd"}
]
像这种数据我要怎样使用post发送请求
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();
后台小哥老坑老坑的,不让我传 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[] 格式的。
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();
}
}
}