java 调用http接口两种方式

HttpClient.jar下载地址 https://download.csdn.net/download/xxx_live_anyd/10340619

import java.io.BufferedWriter;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.methods.InputStreamRequestEntity;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.methods.RequestEntity;

/**
*
* @author 金讯通12345接口调用
*
*/
public class HttpKxtUtils {

/**
 * HttpClient 处理方式
 * @param content  发送请求的内容  字符类型  TokenKey=cec084dfd89a0efe2bf742f7c98f7e8625547460&Name=anyd&Telephone=13594866323&Title=5554545&Content=ddd&Source=2&DataID=1111111111&TypeIndex=0&ImageList=2565
 * @param url    请求地址
 * @return
 * @author anyd
 */
public static String httpClientDoPost(String url,String content){
    try {
        // 将参数转为二进制流
        byte[] requestBytes = content.getBytes("utf-8");
        HttpClient httpClient = new HttpClient();
        PostMethod postMethod = new PostMethod(url);
         // 设置请求头  Content-Type
        postMethod.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        InputStream inputStream = new ByteArrayInputStream(requestBytes, 0,
                requestBytes.length);
        RequestEntity requestEntity = new InputStreamRequestEntity(inputStream,
                requestBytes.length, "application/json; charset=utf-8"); // 请求体
        postMethod.setRequestEntity(requestEntity);
        httpClient.executeMethod(postMethod);// 执行请求
        InputStream soapResponseStream = postMethod.getResponseBodyAsStream();// 获取返回的流
        byte[] datas = null;
        try {
            datas = readInputStream(soapResponseStream);// 从输入流中读取数据
        } catch (Exception e) {
            e.printStackTrace();
        }
        String result = new String(datas, "UTF-8");// 将二进制流转为String
        return result;
    } catch (Exception e) {
        e.printStackTrace();
    } 
    return null;
}


/**
 * 从输入流中读取数据
 * 
 * @param inStream
 * @return
 * @throws Exception
 */
public static byte[] readInputStream(InputStream inStream) throws Exception {
    ByteArrayOutputStream outStream = new ByteArrayOutputStream();
    byte[] buffer = new byte[1024];
    int len = 0;
    while ((len = inStream.read(buffer)) != -1) {
        outStream.write(buffer, 0, len);
    }
    byte[] data = outStream.toByteArray();
    outStream.close();
    inStream.close();
    return data;
}

/**
 * HttpURLconnection  处理方式
 * @param urlPath
 * @param content
 * @return
 */
public static String httpURLDoPost(String urlPath,String content){
   try {
        URL url = new URL(urlPath);
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setRequestMethod("POST");//设置本次请求的方式
        conn.setReadTimeout(5000);//设置请求时间
        conn.setDoInput(true);//是否打开输入流  默认为 true
        conn.setDoOutput(true);//是否打开输出流  默认为false
         //设置请求的内容类型
        conn.setRequestProperty("Content-type", "application/x-www-form-urlencoded");
        conn.connect();//表示连接
        BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(conn.getOutputStream(), "UTF-8"));
        writer.write(content);
        writer.close();
        int code = conn.getResponseCode();
        String result = "";
        if(code ==HttpURLConnection.HTTP_OK ){
            InputStream inputStream = conn.getInputStream();
            byte[] datas = readInputStream(inputStream);// 从输入流中读取数据
            result = new String(datas, "UTF-8");// 将二进制流转为String
        }else{
            System.out.println(urlPath+"连接失败");
            result = urlPath+"连接失败";
        }
        return result;
    } catch (Exception e) {
        e.printStackTrace();
    }
   return null;
}

}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java 调用 HTTP 接口有多种方式,以下是其中两种常见的方式: 1. 使用 HttpURLConnection 类 ```java import java.net.HttpURLConnection; import java.net.URL; import java.io.BufferedReader; import java.io.InputStreamReader; public class HttpUrlConnectionExample { public static void main(String[] args) { try { URL url = new URL("http://example.com/api"); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream())); String inputLine; StringBuffer response = new StringBuffer(); while ((inputLine = in.readLine()) != null) { response.append(inputLine); } in.close(); System.out.println(response.toString()); } catch (Exception e) { System.out.println(e.getMessage()); } } } ``` 2. 使用第三方库 Apache HttpClient ```java import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.HttpClientBuilder; import java.io.BufferedReader; import java.io.InputStreamReader; public class HttpClientExample { public static void main(String[] args) { try { HttpClient client = HttpClientBuilder.create().build(); HttpGet request = new HttpGet("http://example.com/api"); HttpResponse response = client.execute(request); BufferedReader in = new BufferedReader(new InputStreamReader(response.getEntity().getContent())); String inputLine; StringBuffer result = new StringBuffer(); while ((inputLine = in.readLine()) != null) { result.append(inputLine); } in.close(); System.out.println(result.toString()); } catch (Exception e) { System.out.println(e.getMessage()); } } } ``` 无论使用哪种方式,都需要注意请求参数、请求头、响应状态码和响应内容等细节。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值