专栏首页Python程序员杂谈android和javaEE通信的代码片

android和javaEE通信的代码片

随着android的流行度越来越高,越来越多的人投身到android的开发中,其中当然不乏一些javaEE方面的程序员。对于转入到android开发行列的javaEE程序员来说,除了对java的使用相当熟悉之外,还有一个优势就是对Web服务器的熟悉。

对于开发手机办公系统,尤其是要和原先的系统进行对接,这就需要android开发人员除了懂android开发,也要懂的JavaEE的开发(重点在服务器端),可谓是要能上得了“厅堂”,下得了“厨房”。

这几天看了下android的程序,也写了一个。今天学习了一下新浪微博的SDK,整理出来一个简单的HttpClient类(目前是最简单的,以后不断完善),供以后使用。

上代码:

import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;

public class HttpClient {
	public static int httpRequest(String url, PostParameter[] postParams,
             String httpMethod) {
		int responseCode = -1;
		try {
			HttpURLConnection con = null;
			OutputStream osw = null;
			try {
				con = (HttpURLConnection) new URL(url).openConnection();

				con.setDoInput(true);
				if (null != postParams || "POST".equals(httpMethod)) {
				   con.setRequestMethod("POST");
				   con.setRequestProperty("Content-Type",
				           "application/x-www-form-urlencoded");
				   con.setDoOutput(true);
				   String postParam = "";
				   if (postParams != null) {
				   		postParam = encodeParameters(postParams);
				   }
				   byte[] bytes = postParam.getBytes("UTF-8");

				   con.setRequestProperty("Content-Length",
				           Integer.toString(bytes.length));
				   osw = con.getOutputStream();
				   osw.write(bytes);
				   osw.flush();
				   osw.close();
				} 
				responseCode = con.getResponseCode();
				System.out.println("responseCode:"+responseCode);
				System.out.println("responseMsg:"+con.getResponseMessage());
			} finally {

			}
		} catch (Exception e){
			e.printStackTrace();
		}
		return responseCode;
	}

	private static String encodeParameters(PostParameter[] postParams) {
	    StringBuffer buf = new StringBuffer();
	    for (int j = 0; j < postParams.length; j++) {
	        if (j != 0) {
	            buf.append("&");
	        }
	        try {
	            buf.append(URLEncoder.encode(postParams[j].getName(), "UTF-8"))
	            	.append("=").append(URLEncoder.encode(postParams[j].getValue(), "UTF-8"));
	        } catch (java.io.UnsupportedEncodingException neverHappen) {
	        }
	    }
	    return buf.toString();
	}

	public static void main(String[] args) {
		PostParameter[] postParameters = new PostParameter[2];
		postParameters[0] = new PostParameter("loginName","demo");
		postParameters[1] = new PostParameter("password","demo");
		httpRequest("http://localhost:8090/test/user/loginAction.action", postParameters,
	             "POST");
	}
}

还有一个类:

public class PostParameter implements java.io.Serializable, Comparable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	@Override
	public int compareTo(Object o) {
		// TODO Auto-generated method stub
		return 0;
	}

	public PostParameter(String name, String value) {
		super();
		this.name = name;
		this.value = value;
	}
public PostParameter(){

}
	private String name;
	private String value;

	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getValue() {
		return value;
	}
	public void setValue(String value) {
		this.value = value;
	}


}

目前只是发送请求,还没有完成接受返回请求的方法。

通过这个代码就可以使android程序和JAVAEE项目进行交互了。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 建造者模式多产品情况反射实现

    前面在《重温设计模式之建造者模式(Builder)》中关于建造者模式的的介绍比较简单,代码只是实现了基本的模式,因为实际应用中不可能只考虑一个模式的,因此这里给...

    the5fire
  • android和javaEE更完美的通信-传递对象

    继续完善上一篇中的那个代码片,《android和javaEE通信的代码片》中只是简单的向服务器发送请求,没有获取服务器返回数据的操作。

    the5fire
  • Struts2web端和服务器端数据交互

    上篇文章写了jsp页面或者html页面怎么通过url调用服务器端Action中的方法,那么web端和服务器端的数据应该怎么传递呢? 不知道大家是否记得在Serv...

    the5fire
  • Java并发-当compareAndSwapObject遇到自动装箱问题详解

     这篇文章用于记录我在尝试测试使用CAS机制下的compareAndSwapObject方法所遇到的问题:我的目的是想通过compareAndSwapObjec...

    Fisherman渔夫
  • Java 面试知识点解析(四)——版本特性篇(1)

    在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Jav...

    我没有三颗心脏
  • Head First设计模式——复合模式

      复合模式是HeadFirst上面详细讲的最后一个模式,其前面的模式作者认为都是成熟的经常使用的模式。所以这是详细讲解模式的最后一篇,同时这个模式讲解的篇幅也...

    SpringSun
  • python苦短-CV2

    cv2是计算机视觉处理中应用比较多的第三方库,里面还包含一些训练好的识别模型,比如人脸识别、人眼识别等模型,此次想实现一个图片差异判别的程序。下面的两张图存在一...

    用户7760819
  • 性能工具之nGrinder参数化脚本编写简单介绍

    如果是源码部署可以在如图位置新建相关目录与脚本,把上面脚本参数路径修改下即可跑起来:

    高楼Zee
  • java设计模式之装饰者模式

    Tanyboye
  • [ASP.NET Core 3框架揭秘] 服务承载系统[1]: 承载长时间运行的服务[上篇]

    借助.NET Core提供的承载(Hosting)系统,我们可以将任意一个或者多个长时间运行(Long-Running)的服务寄宿或者承载于托管进程中。ASP....

    蒋金楠

扫码关注云+社区

领取腾讯云代金券