首页 > 代码库 > android通过HttpClient与服务器JSON交互
android通过HttpClient与服务器JSON交互
通过昨天对HttpClient的学习,今天封装了HttpClient类
代码如下:
package com.tp.soft.util;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.List;import java.util.Map;import org.apache.http.HttpResponse;import org.apache.http.HttpStatus;import org.apache.http.NameValuePair;import org.apache.http.client.ClientProtocolException;import org.apache.http.client.HttpClient;import org.apache.http.client.entity.UrlEncodedFormEntity;import org.apache.http.client.methods.HttpPost;import org.apache.http.impl.client.DefaultHttpClient;import org.apache.http.message.BasicNameValuePair;import org.apache.http.protocol.HTTP;public class HttpUtil { public static String postRequest(String serverPath, Map<String, String> params, String encoding){ List<NameValuePair> paramPair = new ArrayList<NameValuePair>(); if(params != null && !params.isEmpty()){ for(Map.Entry<String, String> entry : params.entrySet()){ paramPair.add(new BasicNameValuePair(entry.getKey(), entry.getValue())); } } try { HttpClient client = new DefaultHttpClient(); HttpPost post = new HttpPost(serverPath); post.setEntity(new UrlEncodedFormEntity(paramPair, HTTP.UTF_8)); HttpResponse response = client.execute(post); if(response.getStatusLine().getStatusCode() == HttpStatus.SC_OK){ BufferedReader br = new BufferedReader(new InputStreamReader(response.getEntity().getContent())); //数据 String reqData = http://www.mamicode.com/null; String responseData = ""; while((reqData = http://www.mamicode.com/br.readLine()) != null){ responseData += reqData; } br.close(); return responseData; } } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return "postRequest error"; }}
然后通过调用HttpUtil类来达成与服务器交互
package com.tp.soft.app;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import android.app.Activity;import android.os.Bundle;import android.view.LayoutInflater;import android.view.Menu;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ListView;import android.widget.TextView;import com.google.gson.Gson;import com.google.gson.reflect.TypeToken;import com.tp.soft.entity.User;import com.tp.soft.util.HttpUtil;public class MainActivity extends Activity { private ListView mListView; private TextView mContentTxt; private TextView mTimeTxt; private String serverPath = "http://122.226.178.54:8080/uploadApp/LoginServlet"; private static final String ENCODING = "utf-8"; private List<User> userList; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); loadList(); mListView = (ListView) findViewById(R.id.list_id); mListView.setAdapter(new BaseAdapter() { @Override public View getView(int position, View convertView, ViewGroup parent) { if(null == convertView){ convertView = LayoutInflater.from(getApplicationContext()).inflate(R.layout.item, null); } TextView textView = (TextView) convertView.findViewById(R.id.contentTxt); textView.setText(userList.get(position).getUsername()); return convertView; } @Override public long getItemId(int position) { return position; } @Override public Object getItem(int position) { return position; } @Override public int getCount() { return userList.size(); } }); } private List<User> loadList() { Map<String, String> params = new HashMap<String, String>(); String data = HttpUtil.postRequest(serverPath, params, ENCODING); userList = new Gson().fromJson(data, new TypeToken<List<User>>() {}.getType()); return userList; } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true; }}
服务器端则采用了servlet
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setCharacterEncoding("utf-8"); String uname = request.getParameter("uname"); String pwd = request.getParameter("pwd"); PrintWriter pw = response.getWriter(); Gson gson = new GsonBuilder().create(); List<User> userList = new ArrayList<User>(); User user = new User(); user.setUsername("zs"); user.setPassword("1"); userList.add(user); User user1 = new User(); user1.setUsername("lisi"); user1.setPassword("2"); userList.add(user1); String json = gson.toJson(userList); pw.print(json); }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。