android請求json數據-ag真人国际官网
㈠ android怎麼看json數據格式
json有兩種表示結構,對象和數組。
對象結構以」{」大括弧開始,以」}」大括弧結束。中間部分由0或多個以」,」分隔的」key(關鍵字)/value(值)」對構成,關鍵字和值之間以」:」分隔,語法結構如下
{
key1:value1,
key2:value2,
}其中關鍵字是字元串,而值可以是字元串,數值,true,false,null,對象或數組
數組結構以」[」開始,」]」結束。中間由0或多個以」,」分隔的值列表組成,語法結構如下
[
{
key1:value1,
key2:value2
},
{
key3:value3,
key4:value4
}
]
㈡ android如何從一個網路介面中獲得json數據,並且進行解析呢
你可以用jsonsmart來解析: jsonvalue.parsestrict(返回的數據) 進行解析,之後再根據json欄位拿數據
㈢ android客戶端與伺服器發之間的json數據解析
jsonarray jsonarray = new jsonarray(string); //string為返回的字元串
//數據直接為一個數組形式,所以可以直接 用android提供的框架jsonarray讀取json數據,轉換成array
for (int i = 0; i < jsonarray.length(); i ) {
jsonobject item = jsonarray.getjsonobject(i);
//每條記錄又由幾個object對象組成
iitem.getint("index");
// 獲取對象對應的值
item.getstring("address");
}
㈣ android 解析json用那個包裡面的方法比較好呢
android 解析json還有用google出品的gson比較好,具體步驟為:
1、首先,從 code.google.com/p/google-gson/downloads/list下載gsonapi:
google-gson-1.7.1-release.zip 把gson-1.7.jar 到libs(項目根目錄新建一個libs文件夾)中。 可以使用以下兩種方法解析json數據,通過獲取jsonreader對象解析json數據。
代碼如下:
string jsondata = "[{\"username\":\"arthinking\",\"userid\":001},{\"username\":\"jason\",\"userid\":002}]";
try{
jsonreader reader = new jsonreader(new stringreader(jsondata));
reader.beginarray();
while(reader.hasnext()){
reader.beginobject();
while(reader.hasnext()){
string tagname = reader.nextname();
if(tagname.equals("username")){
system.out.println(reader.nextstring());
}
else if(tagname.equals("userid")){
system.out.println(reader.nextstring());
}
}
reader.endobject();
}
reader.endarray();
}
catch(exception e){
e.printstacktrace();
}
2、使用gson對象獲取user對象數據進行相應的操作:
代碼如下:
type listtype = new typetoken
gson gson = new gson();
linkedlist
for (iterator iterator = users.iterator(); iterator.hasnext();) {
user user = (user) iterator.next();
system.out.println(user.getusername());
system.out.println(user.getuserid());
}
3、如果要處理的json字元串只包含一個json對象,則可以直接使用fromjson獲取一個user對象:
代碼如下:
string jsondata = "{\"username\":\"arthinking\",\"userid\":001}";
gson gson = new gson();
user user = gson.fromjson(jsondata, user.class);
system.out.println(user.getusername());
system.out.println(user.getuserid());
㈤ android post請求json參數list認證怎樣實現
如果採用post請求,與後台傳送參數採用json格式,那麼可以採用如下的形式包裝參數:
jsonobject params = new jsonobject();
params.put("signature",signature);
params.put("timestamp",timestamp);
params.put("nouce",nouce);
params.put("parnter",parnter);
params.put("access_token",access_token);
包裝之後可以採用一個訪問網路的工具類httpclient訪問後台介面就可以了
我不知道你說的是不是這個意思,希望幫到你
㈥ 請問android怎樣通過json數據從伺服器獲取圖片
直接獲取是不行的,要有一個文件伺服器,對於文件伺服器會為每個圖片生成一個資源路徑,然後json數據中返回的就是這個資源路徑,最後用url類就可以通過這個資源路徑把圖片download下來
㈦ android volley stringrequest post中的getparams怎麼把json數據提交上去
1.客戶端以普通的post方式進行提交,服務端返回字元串
requestqueue requestqueue = volley.newrequestqueue(getapplicationcontext());
stringrequest stringrequest = new stringrequest(request.method.post,httpurl,
new response.listener
@override
public void onresponse(string response) {
log.d(tag, "response -> " response);
}
}, new response.errorlistener() {
@override
public void onerrorresponse(volleyerror error) {
log.e(tag, error.getmessage(), error);
}
}) {
@override
protected map
//在這里設置需要post的參數
map
map.put("name1", "value1");
map.put("name2", "value2");
return params;
}
};
requestqueue.add(stringrequest);
2.客戶端以json串的post請求方式進行提交,服務端返回json串
requestqueue requestqueue = volley.newrequestqueue(getapplicationcontext());
map
map.put("name1", "value1");
map.put("name2", "value2");
jsonobject jsonobject = new jsonobject(params);
jsonrequest
new response.listener
@override
public void onresponse(jsonobject response) {
log.d(tag, "response -> " response.tostring());
}
}, new response.errorlistener() {
@override
public void onerrorresponse(volleyerror error) {
log.e(tag, error.getmessage(), error);
}
})
{
//注意此處override的getparams()方法,在此處設置post需要提交的參數根本不起作用
//必須象上面那樣,構成jsonobject當做實參傳入jsonobjectrequest對象里
//所以這個方法在此處是不需要的
// @override
// protected map
// map
// map.put("name1", "value1");
// map.put("name2", "value2");
// return params;
// }
㈧ android用volley怎麼給伺服器發送json
1.下載官網的android sdk(本人用的是eclipse)
2.新建一個android項目:
file->new->andriod application project
7、下面就是具體的使用post和get請求的代碼:
a:發送get請求如下:
package com.example.xiaoyuantong;
import java.util.hashmap;
import java.util.iterator;
import org.json.jsonexception;
import org.json.jsonobject;
import android.app.activity;
import android.os.bundle;
import android.util.log;
import android.widget.textview;
import com.android.volley.request;
import com.android.volley.requestqueue;
import com.android.volley.response;
import com.android.volley.volleyerror;
import com.android.volley.toolbox.jsonobjectrequest;
import com.android.volley.toolbox.volley;
/**
* demo
*/
public class mainactivity extends activity {
private requestqueue requestqueue ;
@override
protected void oncreate(bundle savedinstancestate) {
super.oncreate(savedinstancestate);
setcontentview(r.layout.activity_main);
init();
}
private void init() {
textview textview = (textview)findviewbyid(r.id.textview);
requestqueue = volley.newrequestqueue(this);
getjson();
textview.settext("hello");
}
private void getjson(){
string url = "http://192.168.20.1:8080/xiaoyuantong/useraction!register.action?pwd='測試'";
jsonobjectrequest jsonobjectrequest = new jsonobjectrequest(
request.method.get, url, null,
new response.listener
@override
public void onresponse(jsonobject response) {
//這里可以列印出接受到返回的json
log.e("bbb", response.tostring());
}
}, new response.errorlistener() {
@override
public void onerrorresponse(volleyerror arg0) {
// system.out.println("sorry,error");
log.e("aaa", arg0.tostring());
}
});
requestqueue.add(jsonobjectrequest);
}
}
b:發送post請求如下:
package com.example.xiaoyuantong;
import java.util.hashmap;
import java.util.map;
import org.json.jsonexception;
import org.json.jsonobject;
import com.android.volley.request;
import com.android.volley.requestqueue;
import com.android.volley.response;
import com.android.volley.volleyerror;
import com.android.volley.toolbox.jsonobjectrequest;
import com.android.volley.toolbox.volley;
import android.os.bundle;
import android.app.activity;
import android.util.log;
import android.view.menu;
import android.widget.textview;
public class postactivity extends activity {
private requestqueue requestqueue ;
@override
protected void oncreate(bundle savedinstancestate) {
super.oncreate(savedinstancestate);
setcontentview(r.layout.activity_post);
init();
}
@override
public boolean oncreateoptionsmenu(menu menu) {
// inflate the menu; this adds items to the action bar if it is present.
getmenuinflater().inflate(r.menu.post, menu);
return true;
}
private void init() {
textview textview = (textview)findviewbyid(r.id.postview);
requestqueue = volley.newrequestqueue(this);
getjson();
textview.settext("hellopost");
}
private void getjson(){
string url = "http://192.168.20.1:8080/xiaoyuantong/useraction!reg.action";
jsonobjectrequest jsonobjectrequest ;
jsonobject jsonobject=new jsonobject() ;
try {
jsonobject.put("name", "張三");
jsonobject.put("sex", "女");
} catch (jsonexception e1) {
// todo auto-generated catch block
e1.printstacktrace();
}
//列印前台向後台要提交的post數據
log.e("post",jsonobject.tostring());
//發送post請求
try{
jsonobjectrequest = new jsonobjectrequest(
request.method.post, url, jsonobject,
new response.listener
@override
public void onresponse(jsonobject response) {
//列印請求後獲取的json數據
log.e("bbb", response.tostring());
}
}, new response.errorlistener() {
@override
public void onerrorresponse(volleyerror arg0) {
// system.out.println("sorry,error");
log.e("aaa", arg0.tostring());
}
});
requestqueue.add(jsonobjectrequest);
} catch (exception e) {
e.printstacktrace();
system.out.println(e "");
}
requestqueue.start();
}
}
8、在android的logcat裡面能查看到列印的請求
(紅色的顯示的是我在後台請求到數據)
有時候logcat顯示不出數據,可能是消息被過濾了,可以在左邊點擊「減號」刪除過濾
在server端,也就是在myeclipse的建立的另一個後台工程裡面能獲取到請求:
9、後續會補充json數據的解析部分,以及過度到移動雲的部分,上面只是c/s模式下的一個簡單的基於http的請求應答例子。