android服务器json
‘壹’ 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<JSONObject>() {
@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<JSONObject>() {
@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的请求应答例子。
‘贰’ 在android网络编程里,客户端与服务器端采用json方式传递数据。服务器端是怎么接受和返回数据呢
int formDataLength = request.getContentLength();
// 取得ServletInputStream输入流对象
DataInputStream dataStream = new DataInputStream(
request.getInputStream());
byte body[] = new byte[formDataLength];
int totalBytes = 0;
while (totalBytes < formDataLength) {
int bytes = dataStream.read(body, totalBytes, formDataLength);
totalBytes += bytes;
}
String json = new String(body, "ISO-8859-1");
System.out.println(json);
‘叁’ webservice接口已经知道,android怎样获取服务器中的json数据,怎样在客户端显示出来
看你那边什么webservice接口,不一样的接口,请求方式不一样,但是多数是http请求接口,请求回来的数据,通过解析json格式,显示到你要显示的控件就可以了。
‘肆’ 请问android怎样通过json数据从服务器获取图片
直接获取是不行的,要有一个文件服务器,对于文件服务器会为每个图片生成一个资源路径,然后json数据中返回的就是这个资源路径,最后用URL类就可以通过这个资源路径把图片download下来
‘伍’ Android将服务器传来的json解析为数组变量,通过java文件simpleadapter输出到页面。
我做了一个代码如下:
{
ListViewlistview;
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listview=(ListView)findViewById(R.id.listview);
Stringtemp="[{"aa":"1","bb":"2"},{"aa":"3","bb":"4"},{"aa":"5","bb":"6"}]";
List<Map<String,Object>>data=getList(temp);
SimpleAdapteradapter=newSimpleAdapter(this,data,R.layout.item,newString[]{"aa","bb"},newint[]{R.id.aa,R.id.bb});
listview.setAdapter(adapter);
}
publicMap<String,Object>getMap(StringjsonString){
JSONObjectjsonObject;
try{
jsonObject=newJSONObject(jsonString);
@SuppressWarnings("unchecked")
Iterator<String>keyIter=jsonObject.keys();
Stringkey;
Objectvalue;
Map<String,Object>valueMap=newHashMap<String,Object>();
while(keyIter.hasNext()){
key=(String)keyIter.next();
value=jsonObject.get(key);
valueMap.put(key,value);
}
returnvalueMap;
}catch(JSONExceptione){
e.printStackTrace();
}
returnnull;
}
publicList<Map<String,Object>>getList(StringjsonString){
List<Map<String,Object>>list=null;
try{
JSONArrayjsonArray=newJSONArray(jsonString);
JSONObjectjsonObject;
list=newArrayList<Map<String,Object>>();
for(inti=0;i<jsonArray.length();i++){
jsonObject=jsonArray.getJSONObject(i);
list.add(getMap(jsonObject.toString()));
}
}catch(Exceptione){
e.printStackTrace();
}
returnlist;
}
}
item的布局文件
<?xmlversion="1.0"encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<TextView
android:id="@+id/aa"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="30sp"/>
<TextView
android:id="@+id/bb"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="100dp"
android:textColor="#f00"
android:textSize="30sp"/>
</LinearLayout>
最后的界面效果:
‘陆’ android应用怎么样在服务器端解析从客户端发送过来的json数据
首先是服务器要取到数据,然后就是就在服务端解析json啊。。解析都是一样的撒。。可以自己写方法。也可以用别人的jar包。。
‘柒’ android 在服务器端生成json格式数据,在客户端怎么解析
1、生成JSON格式数据,有对应的后台类处理,如果你是做Android开发,后台提供获取数据的接口
2、客户端解决:
JSONArrayjsonArr=newJSONArray(json);
for(inti=0;i<jsonArr.length();i++){
JSONObjectjsonObj=jsonArr.getJSONObject(i);
booleanisChild=jsonObj.has("childrenNodes");
AreaBeanbean=newAreaBean(jsonObj.getString("id"),
jsonObj.getString("parentId"),
jsonObj.getString("name"));
mList.add(bean);
if(isChild){
mchildNodesList.add(jsonObj.getString("childrenNodes"));
}else{
mchildNodesList.add(null);
}
}
‘捌’ 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来进行网络数据传输
有点晕晕的,如果你是传多个对象[{id:1,name:"tom",age:"20"},{id:2,name:"tom",age:"20"}]
怎么搞成服务器请求客户端了??不是客户端请求服务器吗?
一般JSON对应json都是通过id来对应的,我就是这样对应的
‘拾’ 服务器端怎么接收Android客户端传过来的Json数据
android如果是通过http post发送数据的话,可以采用以下方式接收数据:
通过request.getParameter(paraName); 获取参数。
request对象就是表示请求对象,getParameter就是获取参数,传递的参数就是参数名。
例如请求 localhost:8080/web?data=abcd 则服务器取值,request.getParameter("data"); 。