您的位置:首页 > 理论基础 > 计算机网络

java调用http传json数据或字符串

2015-08-11 15:00 513 查看
package com.emm.util;

import java.io.ByteArrayOutputStream;

import java.io.File;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

import java.io.UnsupportedEncodingException;

import java.net.HttpURLConnection;

import java.net.URL;

import java.net.URLEncoder;

import java.util.Map;

import net.sf.json.JSONObject;

public class HttpUtils {

private String firstCookie;

public HttpUtils() {

}

public String sendPostMessage(Map<String, String> params,

String encode,String PATH) {

StringBuffer stringBuffer = new StringBuffer();

if (params != null && !params.isEmpty()) {

for (Map.Entry<String, String> entry : params.entrySet()) {

try {

stringBuffer

.append(entry.getKey())

.append("=")

.append(URLEncoder.encode(entry.getValue(), encode))

.append("&");

} catch (UnsupportedEncodingException e) {

e.printStackTrace();

}

}

stringBuffer.deleteCharAt(stringBuffer.length() - 1);

System.out.println("-->>" + stringBuffer.toString());

try {

URL url = new URL(PATH);

HttpURLConnection httpURLConnection = (HttpURLConnection) url

.openConnection();

httpURLConnection.setConnectTimeout(3000);

httpURLConnection.setDoInput(true);// 从服务器获取数据

httpURLConnection.setDoOutput(true);// 向服务器写入数据

httpURLConnection.setRequestMethod("POST");

byte[] mydata = stringBuffer.toString().getBytes();

httpURLConnection.setRequestProperty("Content-Type",

"application/x-www-form-urlencoded");

httpURLConnection.setRequestProperty("Content-Lenth",

String.valueOf(mydata.length));

OutputStream outputStream = (OutputStream) httpURLConnection

.getOutputStream();

outputStream.write(mydata);

int responseCode = httpURLConnection.getResponseCode();

if (responseCode == 200) {

String responseCookie = httpURLConnection.getHeaderField("Set-Cookie");// 取到所用的Cookie

if (responseCookie != null) {

firstCookie = responseCookie.substring(0, responseCookie.indexOf(";"));

}

return firstCookie.toString();

}

} catch (IOException e) {

e.printStackTrace();

}

}

return "";

}

public static String sendPostMessage2(Map<String, Object> params,

String encode,String PATH,String firstCookie) throws UnsupportedEncodingException {

if (params != null && !params.isEmpty()) {

JSONObject json = JSONObject.fromObject(params);

System.out.println("-->>" + json.toString());

try {

URL url = new URL(PATH);

HttpURLConnection httpURLConnection = (HttpURLConnection) url

.openConnection();

httpURLConnection.setConnectTimeout(3000);

httpURLConnection.setDoInput(true);// 从服务器获取数据

httpURLConnection.setDoOutput(true);// 向服务器写入数据

byte[] mydata = json.toString().getBytes();

httpURLConnection.setRequestProperty("Content-Type",

"application/json");

httpURLConnection.setRequestProperty("Cookie", firstCookie);

httpURLConnection.setRequestMethod("POST");

httpURLConnection.setUseCaches(true);

OutputStream outputStream = (OutputStream) httpURLConnection

.getOutputStream();

outputStream.write(mydata);

// 获得服务器响应的结果和状态码

int responseCode = httpURLConnection.getResponseCode();

if (responseCode == 200) {

// 获得输入流,从服务器端获得数据

InputStream inputStream = (InputStream) httpURLConnection

.getInputStream();

return (changeInputStream(inputStream, encode));

}

} catch (IOException e) {

e.printStackTrace();

}

}

return "";

}

public static String changeInputStream(InputStream inputStream,

String encode) {

ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();

byte[] data = new byte[1024];

int len = 0;

String result = "";

if (inputStream != null) {

try {

while ((len = inputStream.read(data)) != -1) {

byteArrayOutputStream.write(data, 0, len);

}

result = new String(byteArrayOutputStream.toByteArray(), encode);

} catch (IOException e) {

e.printStackTrace();

}

}

return result;

}

public static void ToDownLisences(int id,String result,String commonName) throws IOException{

HttpURLConnection conn = null;

InputStream inputStream = null;

FileOutputStream fileOut = null;

File file = null;

String fileName=commonName+".p12";

try {

String path = Config.props.getProperty("downLoadCert")+id;

URL url = new URL(path);

conn = (HttpURLConnection) url.openConnection();

conn.setDoOutput(true);

conn.setDoInput(true);

conn.setUseCaches(false);

conn.setRequestMethod("GET");

conn.setRequestProperty("Cookie", result);

String filePath = Config.props.getProperty("downLoadPath");

File fp = new File(filePath);

// 创建目录

if (!fp.exists()) {

fp.mkdirs();// 目录不存在的情况下,创建目录。

}

fileName = fileName.substring(fileName.lastIndexOf('/')+1);

inputStream = conn.getInputStream();

if(inputStream!=null){

file = new File(filePath+fileName);

}

//写入到文件

fileOut = new FileOutputStream(file);

if(fileOut!=null){

int c = inputStream.read();

while(c!=-1){

fileOut.write(c);

c = inputStream.read();

}

}

} catch (Exception e) {

e.printStackTrace();

}finally{

if(conn!=null){

conn.disconnect();

}

/*

* 必须关闭文件流

* 否则JDK运行时,文件被占用其他进程无法访问

*/

try {

inputStream.close();

fileOut.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: