您现在的位置是:首页 >

github安卓客户端 android应用怎么样在伺服器端解析从客户端传送过来的json资料

火烧 2022-06-11 16:28:27 1042
a droid应用怎么样在伺服器端解析从客户端传送过来的j o 资料 a droid应用怎么样在伺服器端解析从客户端传送过来的j o 资料a droid中使用HTTP将资料传送到伺服器。HTTP可使用

android应用怎么样在伺服器端解析从客户端传送过来的json资料  

android应用怎么样在伺服器端解析从客户端传送过来的json资料

android中使用HTTP将资料传送到伺服器。HTTP可使用android自带的client框架实现。伺服器得到请求引数再做解析即可。以下是示例程式码:
1. GET 方式传递引数
先将引数放入List,再对引数进行URL编码
List<BasicNameValuePair> params = new LinkedList<BasicNameValuePair>();
params.add(new BasicNameValuePair("param1", "资料")); 增加引数1
params.add(new BasicNameValuePair("param2", "value2"));增加引数2
String param = URLEncodedUtils.format(params, "UTF-8");对引数编码
String baseUrl = "伺服器介面完整URL";
HttpGet getMethod = new HttpGet(baseUrl + "?" + param);将URL与引数拼接
HttpClient Client = new DefaultHttpClient();
try {
HttpResponse response = Client.execute(getMethod); 发起GET请求
Log.i(TAG, "resCode = " + response.getStatusLine().getStatusCode()); 获取响应码
Log.i(TAG, "result = " + EntityUtils.toString(response.getEntity(), "utf-8"));获取伺服器响应内容
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
2. POST方式 方式传递引数
和GET方式一样,先将引数放入List
params = new LinkedList<BasicNameValuePair>();
params.add(new BasicNameValuePair("param1", "Post方法"));增加引数1
params.add(new BasicNameValuePair("param2", "第二个引数"));增加引数2
try {
HttpPost postMethod = new HttpPost(baseUrl);建立一个post请求
postMethod.setEntity(new UrlEncodedFormEntity(params, "utf-8")); 将引数填入POST Entity中
HttpResponse response = Client.execute(postMethod); 执行POST方法
Log.i(TAG, "resCode = " + response.getStatusLine().getStatusCode()); 获取响应码
Log.i(TAG, "result = " + EntityUtils.toString(response.getEntity(), "utf-8")); 获取响应内容
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

C#伺服器端接收并解析android客户端传过来的json资料

从 request取得json字串 string jsonString = Server.UrlDecode(Request["json"]); 从 request取得id int groupid = Convert.ToInt32(Request["groupid"]); 用自带的序列化方法将其转换成定义好的model类,具体的方法说明可以百度下 List<UserModel> listmodel = JsonConvert.DeserializeObject<List<UserModel>>(jsonString); 进行储存操作 service.SaveAuthority(groupid, listmodel);

伺服器端怎么接收Android客户端传过来的Json资料

android如果是通过 post传送资料的话,可以采用以下方式接收资料:

通过request.getParameter(paraName); 获取引数。

request物件就是表示请求物件,getParameter就是获取引数,传递的引数就是引数名。

例如请求 localhost:8080/web?data=abcd 则伺服器取值, request.getParameter("data"); 。

你的问题是不是问反了呀 正常开发中都是客服端解析从伺服器端返回的Json资料 你要把你的json资料格式贴出来,才能帮你解析呀

android 在伺服器端生成json格式资料,在客户端怎么解析

因为这次要从伺服器端得到Json资料,并且通过解析之后把解析后的资料显示在Android客户端中,首先部署伺服器端程式码(直接使用Jsp/Servlet):
构造的Json资料如下:
[{"name":"张三","address":"北京","age":20},{"name":"李四","address":"上海","age":30},{"name":"王五","address":"深圳","age":35}]
[一]伺服器端(Person.java省略):
①:资料构造JsonService.java
public class JsonService {
public static List<Person> getListPerson() {
List<Person> mLists = new ArrayList<Person>();
mLists.add(new Person("张三", "北京", 20));
mLists.add(new Person("李四", "上海", 30));
mLists.add(new Person("王五", "深圳", 35));
return mLists;
}
②:Servlet的程式码(包括构造Json资料,没有使用Json资料转换方法)JsonServlet.java
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/");
response.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();
List<Person> persons = JsonService.getListPerson();
StringBuffer sb = new StringBuffer();
sb.append('[');
for (Person person : persons) {
sb.append('{').append(""name":").append("""+person.getName()+""").append(","); sb.append(""address":").append("""+person.getAddress()+""").append(",");
sb.append(""age":").append(person.getAge());
sb.append('}').append(",");
}
sb.deleteCharAt(sb.length() - 1);
sb.append(']');
out.write(new String(sb));
out.flush();
out.close();
}
③:部署到Tomact 浏览器输入:localhost/JsonWeb/JsonServlet直接访问结果如下:
[{"name":"张三","address":"北京","age":20},{"name":"李四","address":"上海","age":30},{"name":"王五","address":"深圳","age":35}]
至此伺服器端程式码编码完成,下面进行客户端程式码编写; (二)客户端(Person类,和展示资料的布局档案因为简单省去) ①:获取伺服器端的Json资料并且解析的工具类JsonParse.java 必要的需要汇入的包省去
public class JsonParse {
/**
* 解析Json资料
*
* @param urlPath
* @return mlists
* @throws Exception
*/
public static List<Person> getListPerson(String urlPath) throws Exception {
List<Person> mlists = new ArrayList<Person>();
byte[] data = readParse(urlPath);
JSONArray array = new JSONArray(new String(data));
for (int i = 0; i < array.length(); i++) {
JSONObject item = array.getJSONObject(i);
String name = item.getString("name");
String address = item.getString("address");
int age = item.getInt("age");
mlists.add(new Person(name, address, age));
}
return mlists;
}
/**
* 从指定的url中获取位元组阵列
*
* @param urlPath
* @return 位元组阵列
* @throws Exception
*/
public static byte[] readParse(String urlPath) throws Exception {
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
byte[] data = new byte[1024];
int len = 0;
URL url = new URL(urlPath);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
InputStream inStream = conn.getInputStream();
while ((len = inStream.read(data)) != -1) {
outStream.write(data, 0, len);
}
inStream.close();
return outStream.toByteArray();
}
}

②:主Activity类
public class MainActivity extends Activity {
private Button mButton;
private ListView mListView;
使用IP不能使用localhost或者127.0.0.1,因为android模拟器预设系结这个IP,这里应该访问区域网IP
private static final String urlPath = ":10.16.31.207/JsonWeb/JsonServlet";
private static final String TAG = "MainActivity";
private List<Person> persons;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mButton = (Button) findViewById(R.id.button1);
mListView = (ListView) findViewById(R.id.listView1);
mButton.setOnClickListener(new MyOnClickListener());
}
private class MyOnClickListener implements OnClickListener {
@Override
public void onClick(View v) {
try {
得到Json解析成功之后资料
persons = JsonParse.getListPerson(urlPath);
List<HashMap<String, Object>> data = new ArrayList<HashMap<String, Object>>();
for (int i = 0; i < persons.size(); i++) {
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("name", persons.get(i).getName());
map.put("address", persons.get(i).getAddress());
map.put("age", persons.get(i).getAge());
data.add(map);
}
初始化介面卡,并且系结资料
SimpleAdapter _Adapter = new SimpleAdapter(MainActivity.this,
data, R.layout.listview_item, new String[] { "name",
"address", "age" }, new int[] { R.id.textView1,
R.id.textView2, R.id.textView3 });
mListView.setAdapter(_Adapter);
} catch (Exception e) {
Toast.makeText(MainActivity.this, "解析失败", 2000).show();
Log.i(TAG, e.toString());
}
}
}

tomcat伺服器端如何传送json资料给客户端

(1)使用JSON的Jar包.
(2)输出JSONArray.
第二种直接输出JSON字串.就可以.
需要注意的是客户端接收后的处理

如何在伺服器端传回.json资料给客户端

1. Android客户端与伺服器端通讯方式:
Android与伺服器通讯通常采用HTTP通讯方式和Socket通讯方式,而HTTP通讯方式又分get和post两种方式。
2. 解析伺服器端返回资料的解释:
(1).对于伺服器端来说,返回给客户端的资料格式一般分为、xml和json这三种格式。
(2). JSON(Javascript Object Notation)是一种轻量级的资料交换格式,相比于xml这种资料交换格式来说,因为解析xml比较的复杂,而且需要编写大段的程式码,所以客户端和伺服器的资料交换格式往往通过JSON来进行交换。
3. Android中,用GET和POST访问资源
(1).客户端向伺服器端传送请求的时候,向伺服器端传送了一个数据块,也就是请求资讯。
(2). GET和POST区别:
A: GET请求请提交的资料放置在HTTP请求协议头(也就是url)中,而POST提交的资料则放在实体资料中,安全性比较高。
B: GET方式提交的资料最多只能有1024位元组,而POST则没有此限制。

javascript是在伺服器端解析还是 客户端解析

javascript、jquery、、css等在客户端解析,后台语言在伺服器端解析,如php、asp、jsp等

android中怎么解析伺服器端发来的.xm资料

我有例子,我会用810326587@qq.传送给你

在java中怎么将一组资料从客户端传送到伺服器端?

通过反射!

下面是一个伺服器与客户端资讯互动的例子:

反射API介绍

4.Java Socket程式设计 TCP 协议程式设计
1) TCP工作模型: 先找
堂(主机/IP), 到食堂以后找视窗
(Socket/套接字 埠号), 服务员等待连线,客户向服务员发起连线
连线以后, 一个视窗可以为每个客户安排一个服务员(执行绪)提供服务,
每个服务过程可以双向交流通讯(流), 通讯完成后要关闭连线.
5. TCP 服务端程式设计(食堂)(java.io.*,java..*,java.lang.*)
1) 建立ServerSocket例项系结一个服务埠(Socket/套接字 埠号)
2) 开始ServerSocket例项 的监听, 等待客户端的连线
3) 如果有客户连线进来, 就获得了客户的套接字(Socket)例项
客户的套接字(Socket)例项中包括与客户端建立的连线流
4) 为这个客户(Socket) 建立一个服务执行绪, 提供服务(run方法)
5) 继续等待下一个连线, 返回到2)
6) 服务执行绪 完成通讯服务过程

7) 埠号: 0~65535, 1K以下留给系统使用

6. TCP 客户端程式设计
1) 建立Socket 例项, 连线到伺服器端, 成功建立s就表示连线到了
伺服器
Socket s = new Socket("host", port)
2) 客户端 Socket 与伺服器端 Socket 对应, 都包含输入, 输出流
客户端的s.getInputStream() 连线于伺服器s.getOutputStream()
客户端的s.getOutputStream()连线于伺服器s.getInputStream()
3) 使用执行绪处理 网路流

github安卓客户端 android应用怎么样在伺服器端解析从客户端传送过来的json资料

7. Java 反射
1) 反射是Java自我管理(类, 物件)的机制
2) * 可以通过反射机制发现物件的型别 发现型别的方法/属性/构造器
3) * Java 反射 可以建立物件 并 访问任意物件方法和属性等
4) Class 载入
类载入到记忆体: java 将磁碟类档案载入到记忆体中,为一个物件(例项)
这个物件是Class的例项, 也就是 这些物件都是Class例项
5)Class 例项代表Java中型别, 基本型别的型别: int.class, long.class
类型别 Class 例项获得如下:
Class cls = String.class;
Class cls = Class.forName("java.lang.String");
Class cls = "abc".getClass();
以上方法获得cls 是同一个物件, 就是String 类记忆体载入的结果

package javase2.day06.ftp;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java..Socket;import java.util.Scanner;/** * ftp 客户端 可以使用命令 ls pwd get */public class FtpClient { public static void main(String[] args) throws IOException{ FtpClient client = new FtpClient(); client.open(); } public void open() throws IOException{ Socket s = new Socket("localhost", 9000); InputStream in = s.getInputStream(); OutputStream out = s.getOutputStream(); 处理客户端对伺服器的请求 new RequestProcess(out).start(); 处理伺服器的反馈资讯 new ResponseProcess(in).start(); }处理客户端对伺服器的请求 class RequestProcess extends Thread{ OutputStream out; public RequestProcess(OutputStream out) { this.out = out; } public void run() { try{ Scanner sc = new Scanner(System.in); while(true){ String s = sc.nextLine(); IOUtils.println(out, s); if(s.equals("bye")){ System.exit(0); } } }catch(IOException e){ e.printStackTrace(); } } } class ResponseProcess extends Thread{ InputStream in; public ResponseProcess(InputStream in) { this.in = in; } public void run() { try{ while(true){ String header = IOUtils.readLine(in); if(header.startsWith("text,")){ show(header,in); }else if(header.startsWith("file,")){ save(header, in); } } }catch(IOException e){ e.printStackTrace(); } } } public void show(String header, InputStream in) throws IOException { int n = Integer.parseInt(header.split(",")[1]); for(int i=0; i<n; i++){ String s = IOUtils.readLine(in); System.out.println(s); } } public void save(String header, InputStream in) throws IOException{ File dir = new File("ftp"); if(!dir.exists()){ dir.mkdir(); } header: file,10,filename String[] data = header.split(","); long length = Long.parseLong(data[1]); String filename = data[2]; File file = new File(dir, filename); BufferedOutputStream out = new BufferedOutputStream( new FileOutputStream(file)); for(long i=0; i<length; i++){ int b = in.read(); out.write(b); } out.close(); } }-----------------------------------package javase2.day06.ftp;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java..ServerSocket;import java..Socket;/** * 模拟FTP伺服器, 支援命令pwd,ls,get file * * 协议: type,length,value TLV格式 * * 文字: text,5nline1nline2nline3nline4nline5n * 档案: file,4,filenamen 41 42 43 44 * * text,5nline1nline2nline3nline4nline5nfile,4,filenamen 41 42 43 44 */public class FtpServer { public static void main(String[] args) throws IOException{ FtpServer server = new FtpServer(); server.start(); } public void start() throws IOException{ ServerSocket ss = new ServerSocket(9000); while(true){ Socket s = ss.aept(); new Agent(s).start(); } } class Agent extends Thread{ Socket s; public Agent(Socket s) { this.s = s; } public void run() { try{ InputStream in = s.getInputStream(); OutputStream out = s.getOutputStream(); 向客户端传送, 先发协议头,再发送文字行 out.write("text,1n".getBytes());协议头 传送讯息内容, 一行文字讯息 out.write("欢迎使用FTP演示伺服器!n".getBytes()); out.flush(); while(true){ 读取客户端传送到命令 String cmd = IOUtils.readLine(in).trim(); if("pwd".equals(cmd)){显示当前目录 pwd(out); }else if("ls".equals(cmd)){ ls(out); }else if(cmd.startsWith("get ")){ get(cmd, out); }else if("bye".equalsIgnoreCase(cmd)){ IOUtils.println(out, "text,1"); IOUtils.println(out, "Bye, Bye!"); s.close(); }else{ out.write("text,1n".getBytes());协议头 out.write("只支援pwd,ls,get,bye!n".getBytes()); out.flush(); } } }catch(IOException e){ e.printStackTrace(); } } } public void pwd(OutputStream out) throws IOException{ File dir = new File("."); IOUtils.println(out, "text,1"); IOUtils.println(out, dir.getCanonicalPath()); } public void ls(OutputStream out) throws IOException{ File dir = new File("."); File[] files = dir.listFiles(); IOUtils.println(out, "text,"+files.length); for (File f : files) { if(f.isDirectory()){ IOUtils.println(out, "["+f.getName()+"]"); }else{ IOUtils.println(out, f.getName()); } } } public void get(String cmd, OutputStream out) throws IOException{ cmd="get filename" String name = cmd.split("\s+")[1]; File file = new File(name); if(! file.exists()){ IOUtils.println(out, "text,1"); IOUtils.println(out, "没有档案呀!"+name); return; } 档案协议头: IOUtils.println(out, "file,"+file.length()+","+name); FileInputStream in = new FileInputStream(file); IOUtils.cp(in, out); out.flush(); in.close(); IOUtils.println(out, "text,1"); IOUtils.println(out, "传送成功:"+name); }}

  
永远跟党走
  • 如果你觉得本站很棒,可以通过扫码支付打赏哦!

    • 微信收款码
    • 支付宝收款码