关于java的POST和GET(org.json.jar)

最近学习用java来向服务器进行数据的POST和GET的操作。因为师兄有Android开发的经验,他推荐我使用gson来GET数据,但是我尝试使用了一下,觉得没有那么好用,下面写的是使用org.json.jar来GET数据。因为有过ios编程的经验,感觉它GET数据的方法跟ios的很像,所以用起来比较容易理解。

-------------------------------------------------分割线君----------------------------------------------------

org.json的jar包下载地址,猛点这里:org.json.jar

-------------------------------------------------分割线君----------------------------------------------------

GET

从服务器提取数据(下面我用了新浪微博API获取用户微博做例子)

static void readContentFromGet() throws IOException, JSONException
{
	//提交地址和属性,一个以上的属性用&隔开
	URL url=new URL(KDefine.Kfriends + "?access_token=" + KDefine.Kaccess_token);
	HttpURLConnection conn=(HttpURLConnection)url.openConnection();
	//设置超时时间,单位是秒
	conn.setConnectTimeout(5000);
	//访问提交方式
	conn.setRequestMethod("GET");
	conn.connect();    
	//把输入流通过InputStreamReader将其转换为字符流  
        BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream(),"UTF-8"));
	//把字符串提取出来
        String result = reader.readLine();
        getContentFromResult(result);
}
//把数据逐个整理
static void getContentFromResult(String result) throws JSONException 
{
	//把字符串转为JSONObject对象
        JSONObject jsonObject = new JSONObject(result); 
	//下面是根据提取出来的json数据格式来进行提取,我提取的数据格式如下图
        JSONArray statuses = jsonObject.getJSONArray("statuses");
        for(int i = 0 ; i < statuses.length() ; i++)
        {
        	JSONObject obj = statuses.getJSONObject(i);
          	if(obj.has("deleted"))
          		continue;
        	Friends friends = new Friends(obj,obj.getJSONObject("user"));
        	FriendsList.friendsList.add(friends);
        }
}


-------------------------------------------------分割线君----------------------------------------------------

POST

下面是POST数据的方法,使用的例子是新浪微博发送一条新微博的API

static void create(int num , String comment) throws IOException
{
	DataOutputStream out = null; 
	BufferedReader in = null; 
	try 
	{ 
		//提交地址
		URL url = new URL(KDefine.Kcreate); 
		/*
		下面的url.openConnection()返回的对象实际上是根据URL
		的请求协议生成的URLConnection类,故此处最好将其转化
		为URLConnection的子类HttpURLConnection
		类型的对象,以便用到HttpURLConnection更多的API
		*/ 
		HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
		// Post 请求不能使用缓存
	  	conn.setUseCaches(false);
		//打开写入属性
		conn.setDoOutput(true); 
		//打开读取属性
		conn.setDoInput(true); 
		//访问提交方式
		conn.setRequestMethod("POST"); 
		// 设定传送的内容类型是可序列化的java对象(如果不设此项,在传送序列化对象时,当WEB服务默认的不是这种类型时可能抛java.io.EOFException) 
		conn.setRequestProperty(" Content-Type "," application/x-www-form-urlencoded ");
		conn.connect();    
		// 此处getOutputStream会隐含的进行connect(即:如同调用上面的connect()方法,所以在开发中不调用上述的connect()也可以)。 
  	      	out = new DataOutputStream(conn.getOutputStream()); 
		//设置上传参数,中文转为UTF-8编码
		String param = "access_token=" + KDefine.Kaccess_token + "&status=" + URLEncoder.encode(status,"UTF-8");	
		把数据转为byte	
		out.writeBytes(param);
		out.flush(); 
		//得到返回数据,可以用来判断发送是否成功
      		in = new BufferedReader(new InputStreamReader(conn.getInputStream()));  
	}
	catch(Exception e) 
	{ 
		System.out.println("POST错误" + e); 
		e.printStackTrace(); 
	} 
	finally 
	{ 
		try 
		{ 
			if (out != null) 
			{ 
				out.close(); 
			} 
			if (in != null) 
			{ 
				in.close(); 
			} 
		} 
		catch (IOException ex) 
		{ 
			ex.printStackTrace(); 
		} 
	} 
}	



参考文章:http://www.blogjava.net/supercrsky/articles/247449.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值