Android/java 利用HttpUrlConnection 发送put请求,携带json参数

  之前关于Http请求基本上只接触过GET和POST,最近由于项目需要使用Http的put请求,由于之前对PUT请求完全不了解,度娘里面也基本上没啥可直接参考的,于是去stackoverflow找到了http://stackoverflow.com/questions/15678208/making-put-request-with-json-data-using-httpurlconnection-is-not-working 这篇文章,参考了这篇文章,终于解决了PUT请求的一些问题,下面做一下简单的记录,方便自己学习和交流,因为是新手第一次做这个,错误之处,欢迎指出,一起学习交流。


关于PUT请求的代码实现,其实跟POST请求比较相似,下面是代码:

public String httpUrlConnectionPut(String httpUrl, String... params) {
		String result = "";
		URL url = null;
		try {
			url = new URL(httpUrl);
		} catch (MalformedURLException e) {
			e.printStackTrace();
		}
		if (url != null) {
			try {
				HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();
				urlConn.setRequestProperty("content-type", "application/json");
				urlConn.setDoInput(true);
				urlConn.setDoOutput(true);
				urlConn.setConnectTimeout(5 * 1000);
				//设置请求方式为 PUT
				urlConn.setRequestMethod("PUT");
				
				urlConn.setRequestProperty("Content-Type", "application/json");
				urlConn.setRequestProperty("Accept", "application/json");
				
				urlConn.setRequestProperty("Charset", "UTF-8");
				
	
				DataOutputStream dos = new DataOutputStream(urlConn.getOutputStream());
				//写入请求参数
				//这里要注意的是,在构造JSON字符串的时候,实践证明,最好不要使用单引号,而是用“\”进行转义,否则会报错
				 // 关于这一点在上面给出的参考文章里面有说明
				String jsonParam = "{\"appid\":6,\"appkey\":\"0cf0vGD/ClIrVmvVT/r5hEutH5M=\",\"openid\":200}";
				dos.writeBytes(jsonParam);
				dos.flush();
				dos.close();
				
				if (urlConn.getResponseCode() == 200) {
					InputStreamReader isr = new InputStreamReader(urlConn.getInputStream());
					BufferedReader br = new BufferedReader(isr);
					String inputLine = null;
					while ((inputLine = br.readLine()) != null) {
						result += inputLine;
					}
					isr.close();
					urlConn.disconnect();
				}

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

		return result;

	}
本人也是新手,欢迎交流学习


你可能感兴趣的:(Android)