我想将数据从Android应用程序以JSON格式发送到远程服务器。 以下是我的json格式: -
{
"contacts": [
{
"name": "ritva",
"phone_no": "12345657890",
"user_id": "1"
},
{
"name": "jisa",
"phone_no": "12345657890",
"user_id": "1"
},
{
"name": "tithi",
"phone_no": "12345657890",
"user_id": "1"
}
]
}
任何人都可以告诉我如何使用Volley发送此数据吗?
答案 0 :(得分:2)
POST/GET
这样的方法制作像波纹管一样的截击请求,
url
,response & error
听众。并且用于发送json覆盖
传递要发送的json的getBody()
方法。RequestQueue
&将请求添加到它。你可以开始吧
致电start()
试试这个:
// Instantiate the RequestQueue.
RequestQueue queue = Volley.newRequestQueue(this);
String url ="http://www.google.com";
// Request a string response from the provided URL.
StringRequest stringRequest = new StringRequest(Request.Method.POST, url,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
// your response
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
// error
}
}){
@Override
public byte[] getBody() throws AuthFailureError {
String your_string_json = ; // put your json
return your_string_json.getBytes();
}
};
// Add the request to the RequestQueue.
queue.add(stringRequest);
requestQueue.start();
有关详细信息,请参阅 this
答案 1 :(得分:0)
要发送JSON类型数据,您应该使用volley
发出JSON请求 // Instantiate the RequestQueue.
RequestQueue queue = Volley.newRequestQueue(this);
String url ="http://www.google.com";
JsonObjectRequest jsObjRequest = new JsonObjectRequest
(Request.Method.POST, url, obj, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
// TODO Auto-generated method stub
}
});
// Add the request to the RequestQueue.
queue.add(stringRequest);
requestQueue.start();
其中obj是您要发送的JSON对象。如果您想要更多说明,请提出。
如果这有帮助,请将其标记。
答案 2 :(得分:0)
<强> 1。将Volley和Gson Dependency添加到build.gradle:
'com.mcxiaoke.volley:library:1.0.19'
'com.google.code.gson:gson:2.7'
注意:如果您在String变量中有JSON数据,那么只需将String变量作为第三个参数传递给JsonObjectRequest。(转到步骤6)
如果您的类中有JSON数据,那么只需在JsonObjectRequest的第三个参数的gson.toJson()中传递该类。(转到步骤6)
如果要在类中获取数据,则需要创建与JSON数据相同的类结构。 (转到第2步)
<强> 2。然后使用http://www.jsonschema2pojo.org/
为上述JSON结构创建POJO类图片中显示的示例: Red marks showing the changes needed to make on site
然后您将获得两个类作为ContactsTop和Contact。 注意:ContactsTop是从jsonschema2pojo.com创建POJO类时提供的名称
第3。将上面生成的类添加到项目中
<强> 4。创建Volley RequestQueue对象和gson对象。
RequestQueue requestQueue = Volley.newRequestQueue(this);
Gson gson = new Gson();
<强> 5。然后将以上JSON数据添加到POJO类。
ContactsTop contactsTop=new ContactsTop();
List<Contact> contactList =new ArrayList();
Contact contact=new Contact();
contact.setPhoneNo("12345657890");
contact.setName("ritva");
contact.setUserId("1");
contactList.add(contact);
contactsTop.setContacts(contactList);
<强> 6。创建JSONObject以使用您的数据调用Web服务。
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST, "www.your-web-service-url.com/sendContact.php", gson.toJson(contactsTop), new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.v("Volley:Response ", ""+response.toString());
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.v("Volley:ERROR ", error.getMessage().toString());
}
});
<强> 7。将jsonObjectRequest添加到requestQueue中。 (不要忘记添加此行。这将在RequestQueue中添加您的请求,然后只有您将从您的服务获得JSON响应或错误)。不要忘记在AndroidManifest.xml中添加INTERNET权限
requestQueue.add(jsonObjectRequest);
然后您将在Android日志监视器中从远程服务获得响应或错误。