立即注册 登录
About云-梭伦科技 返回首页

virgo的个人空间 https://aboutyun.com/?4176 [收藏] [复制] [分享] [RSS]

日志

基于volley通信实现在android端与服务器端的json数据交互

已有 7783 次阅读2014-5-11 10:21 | android, android

1.  下载官网的android SDK(本人用的是eclipse

2.  新建一个android项目:

File->new->andriod Application project


3、点击next,建立第一个mainActivity

4、启动服务器端,本人采用的是ssh搭建的server端,能接受前台的postget请求,然后返还json数据(本例子,主要演示如何在android发送postget请求)

6、下面有很关键的几步的,与在本地编写web有所不同:

A:android端的url要写上服务器端的ip:

如下:

               

   String url = "http://192.168.20.1:8080/xiaoyuantong/userAction!register.action?pwd='测试'";

(后面我会给出完整的代码)

B、要在AndroidManifest.xml文件中添加:

7、下面就是具体的使用postget请求的代码:

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、在androidlogcat里面能查看到打印的请求

(红色的显示的是我在后台请求到数据)

 

有时候logcat显示不出数据,可能是消息被过滤了,可以在左边点击“减号”删除过滤

 

server端,也就是在myeclipse的建立的另一个后台工程里面能获取到请求:


9、后续会补充json数据的解析部分,以及过度到移动云的部分,上面只是c/s模式下的一个简单的基于http的请求应答例子。


路过

雷人

握手

鲜花

鸡蛋

全部作者的其他最新日志

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 立即注册

关闭

推荐上一条 /2 下一条