안드로이드에서 발리를 사용하여 json을 서버로 보내는 방법
1. ?공식 홈페이지에서 android SDK를 다운로드하세요. (저는 eclipse를 사용합니다.)
2. ?새 Android 프로젝트 만들기:
File->new->andriod Application project
3. 첫 번째 mainActivity를 만들기 위해 다음을 클릭합니다.
4. 서버 터미널에서는 ssh로 구축된 서버 측을 사용합니다. 이 서버는 프론트 데스크에서 게시물을 수락하거나 요청을 받은 다음 json 데이터를 반환할 수 있습니다(이 예에서는 주로 안드로이드에서 게시물을 보내고 요청을 받는 방법을 보여줍니다)
6. 아래에는 웹을 로컬로 작성하는 것과 다른 몇 가지 주요 단계가 있습니다:
A: 안드로이드 측의 URL은 서버 측의 IP로 작성되어야 합니다:
다음과 같습니다:
String url = ".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;
android.util.Log 가져오기;
android.widget.TextView 가져오기
com.android.volley.Request;
import com.android .volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError
p>import com.android.volley .toolbox.JsonObjectRequest;
import com.android.volley.toolbox.Volley;
/** * 데모 */ p>
공용 클래스 MainActivity 확장 활동 {
private RequestQueue requestQueue
@Override
protected void onCreate(Bundle saveInstanceState) {
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 = ".example.xiaoyuantong;
java.util.HashMap 가져오기;
java.util.Map 가져오기;
org.json.JSONException 가져오기 ;
org.json.JSONObject 가져오기;
com.android.volley.Request 가져오기;
com.android.volley.RequestQueue 가져오기;
com.android.volley.Response 가져오기;
com.android.volley.VolleyError 가져오기;
com.android.volley.toolbox.JsonObjectRequest 가져오기;
import com.android.volley.toolbox.Volley;
android.os.Bundle 가져오기;
android.app.Activity 가져오기;
import android.util.Log;
import android.view.Menu;
import android.widget.TextView
public class PostActivity는 Activity를 확장합니다. p>
import android.widget.TextView;
p>
private RequestQueue requestQueue ;
@Override
protected void onCreate(Bundle saveInstanceState ) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_post); init ();
}
@Override
public boolean onCreateOptionsMenu( Menu menu) { // 메뉴를 확장합니다. 항목이 있으면 작업 표시줄에 추가합니다. getMenuInflater().inflate(R.menu.post, menu);
} p>
private void init() {
TextView textView = (TextView)findViewById(R.id.postView);
requestQueue = Volley.newRequestQueue(this);
getJson();
textView.setText("hellopost")
}
private void getJson(){
문자열 url = "http://192.168.20.1:8080/xiaoyuantong /userAction!reg.action" JsonObjectRequest jsonObjectRequest;
JSONObject() ; try { jsonObject.put("name", "张三"); jsonObject.put("sex", "女") } catch (JSONException e1) { // TODO 자동 생성된 catch 블록 e1. printStackTrace(); }
//프런트 데스크에서 제출할 게시물 데이터를 배경에 인쇄합니다.
Log.e("post",jsonObject.toString());
//게시 요청 보내기 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("죄송합니다,Error");
Log.e("aaa ", arg0.toString());
}
});
requestQueue.add(jsonObjectRequest) } catch( 예외 e) { e. printStackTrace(); System.out.println(e + "") } requestQueue.start(); p>8. android에서는 logcat에서 인쇄 요청을 볼 수 있습니다.
(빨간색은 백그라운드에서 요청한 데이터를 나타냅니다.)
때때로 logcat이 데이터를 표시하지 못하는 경우가 있습니다. 어쩌면 메시지가 필터링되었을 수도 있습니다. 왼쪽의 "빼기 기호"를 클릭하여 필터를 삭제할 수 있습니다.
서버 측, 즉 myeclipse가 생성한 다른 백그라운드 프로젝트에서 요청을 얻을 수 있습니다. :
9. 후속 작업은 json 데이터의 구문 분석 부분과 모바일 클라우드로의 전환을 보완하기 위해 c/s 모드의 간단한 http 기반 요청 응답 예입니다.