【发布时间】:2017-01-28 00:16:56
【问题描述】:
这里的问题是我必须在 URL API 中传递参数,但问题是 json 在 Postman-->Body-->raw 中有效
通过传递参数:
{"from":"abc","to":"pqr","amount":"10000"}
结果是:
{
"errFlag": "0",
"errMsg": "Success",
"result": "1745738346.397"
}
但是我们在 OkHttp 中传递同样的东西,我们得到了另一个结果 这是我的代码 Okhttp:
b1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (isNetworkAvailable()) {
RequestBody formBody = new FormBody.Builder()
.add("from", "abc")
.add("to", "pqr")
.add("amount", "10000")
.build();
try {
post(Baseurl, formBody, new Callback() {
@Override
public void onFailure(Call call, IOException e) {
Log.e("JSONDemo", "IOException", e);
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String res = response.body().string();
Log.e("res", " " + res);
try {
JSONObject jsonObject=new JSONObject(res);
String errFlag=jsonObject.getString("errFlag");
if(errFlag.equals("0")){
String a=jsonObject.getString("result");
Log.e("hello........",a);
}else{
Log.e("Error", "Wrong");
}
runOnUiThread(new Runnable() {
@Override
public void run() {
// you can access all the UI componenet
}
});
} catch (Exception e) {
Log.e("JSONDemo", "onResponse", e);
e.printStackTrace();
}
}
});
} catch (Exception e) {
Log.e("JSONDemo", "Post Exception", e);
}
}
}
});
private final OkHttpClient client = new OkHttpClient();
Call post(String url, RequestBody formBody, Callback callback) throws IOException {
Request request = new Request.Builder()
.url(url)
.post(formBody)
.build();
Call call = client.newCall(request);
call.enqueue(callback);
return call;
}
输出是:
{"errNum":"404","errFlag":"1","errMsg":"Some fields are missing"}
我只想要 errFlag=0 然后传递结果,否则不传递。 感谢帮助
【问题讨论】:
-
代替 FormBody 为什么不试试 FormEncodingBuilder
-
FormBody 是 RequestBody 的对象。我没有得到 FormEncodingBuilder
-
让我把代码贴出来你可以试试
-
将不胜感激。
标签: android json getjson okhttp okhttp3