请求url处理java_【脚本写作】Java: HttpURLConnection请求处理

下文代码不解释,调试提供,仅做参考,http request的相关理论知识,可网上搜索。

一般而言,request请求入参:post需要通过set到attribute,而get则直接放到请求的URL中。拼接示例:(http://www.baidu.com?userName=Janesong&page=5)

常见的Type类型有:

String reqHttpContentType = "application/x-www-form-urlencoded; charset=utf-8";

String reqHttpContentType = "text/plain; charset=utf-8";

static String reqHttpContentType = "application/json; charset=utf-8";

======================================================================================

import java.io.*;

import java.net.URL;

import java.net.HttpURLConnection;

import java.nio.charset.StandardCharsets;

/**

* Created by Janesong on 2016/8/3. Modified with Cookies on 2017/2/10

*/

public class HttpRequest {

/**

* HttpURLConnect API Request

*

* @param String HttpVo httpVo

* @return String

* @author Janesong on 2016-8-3

**/

public static HttpVo sendRequestHttp(HttpVo httpVo) throws Exception {

int httpConnectTimeOut = TestConfigUtil.getInstance().getHttpURLConnectTimeOut();

int httpReadTimeOut = TestConfigUtil.getInstance().getHttpURLReadTimeOut();

//        String httpAthorization = HttpRequest.getHttpBasicAuth();

String httpMessage = "";

String responseBody = "";       // Http返回消息体

int responseCode = -1;          // Http返回码

// post请求的参数

byte[] paraData = httpVo.getReqParameters().getBytes(StandardCharsets.UTF_8);

URL bjURL = new URL(httpVo.getReqURL());

HttpURLConnection urlConn = (HttpURLConnection) objURL.openConnection();

// 设置HTTP请求的属性

urlConn.setRequestMethod(httpVo.getReqType());  // 设置请求方法为:POST、GET、DELETE、PUT

urlConn.setReadTimeout(httpReadTimeOut);        // 设置读取超时为5秒

urlConn.setConnectTimeout(httpConnectTimeOut);  // 设置连接网络超时为10秒

urlConn.setDoInput(true);                       // 设置此方法,允许从URL读取内容

urlConn.setUseCaches(false);                    // 不允许缓存

urlConn.setInstanceFollowRedirects(false);      // 不允许重定向

urlConn.setRequestProperty("Connection", "Keep-Alive");// 维持长连接

urlConn.setRequestProperty("Content-Type", httpVo.getReqContentType());

urlConn.setRequestProperty("Content-Length", Integer.toString(paraData.length));

urlConn.setRequestProperty("Cookie", httpVo.getReqCookies());

//        urlConn.setRequestProperty("Authorization", httpAthorization);

//        urlConn.setRequestProperty("X-Forwarded-For", httpVo.getReqIPAddress());  // 指定ip发送请求-proxy, Pass

urlConn.setRequestProperty("X-Real-Ip", httpVo.getReqIPAddress());        // 指定ip发送请求-real,Pass

urlConn.setDoOutput(true);      // 设置此方法,允许向URL输入内容

// 获得一个输出流urlConnection.getOutputStream(),再向服务器写数据.

DataOutputStream utputStream = new DataOutputStream(urlConn.getOutputStream());

outputStream.write(paraData);

// 当设置http的Authorization属性后,请使用下述代码

//        if (!httpVo.getReqType().equals("GET")) {            // GET方法不支持if内属性设置,否则当做POST处理

//            urlConn.setDoOutput(true);      // 设置此方法,允许向URL输入内容

//            // 获得一个输出流urlConnection.getOutputStream(),再向服务器写数据.

//            DataOutputStream wr = new DataOutputStream(urlConn.getOutputStream());

//            wr.write(paraData);

//        }

try {

responseCode = urlConn.getResponseCode();      // 调用此方法就不必再使用urlConn.connect()方法

httpVo.setResponseHttpCode(responseCode);

if (responseCode == 200 || responseCode == 201) {

httpVo.setIsSuccess(true);

httpMessage = httpVo.getReqType() + " Test API Success ! The response code: " + responseCode;

httpVo.setResponseHttpMessage(httpMessage);

responseBody = getMessageFromJSON(urlConn);

if (responseBody.equals("null")) {

responseBody = "";

}

httpVo.setResponseHttpBody(responseBody);

} else {

httpMessage = httpVo.getReqType() + " API failed: " + httpVo.getReqURL() + "?"

+ httpVo.getReqParameters() + " response code: " + responseCode;

httpVo.setResponseHttpMessage(httpMessage + "\n  " + urlConn.getResponseMessage());

}

} catch (Exception exLog) {

exLog.printStackTrace();

} finally {

if (outputStream != null) {

outputStream.flush();

outputStream.close();

}

if (urlConn != null) {

urlConn.disconnect();   // 关闭连接

}

}

return httpVo;

}

/**

* 将消息体中的InputStream转为String

*

* @param HttpURLConnection urlConn

* @return String

* @author Janesong on 2016-8-3

**/

public static String getMessageFromJSON(HttpURLConnection urlConn) throws Exception {

String responseMessage = null;    // 接口返回消息体

StringBuffer stringBuffer = new StringBuffer();

InputStream inputStream = null;

try {

inputStream = new BufferedInputStream(urlConn.getInputStream());

BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream, "utf-8"));   // 避免服务端返回的中文变乱码,可修改编码格式

String inputLine = "";

while ((inputLine = bufferedReader.readLine()) != null) {

stringBuffer.append(inputLine);

}

responseMessage = stringBuffer.toString();

} catch (Exception exLog) {

exLog.printStackTrace();

} finally {

if (inputStream != null) {

//                System.out.println("Message: " + responseMessage);

inputStream.close();

}

}

return responseMessage;

}

/**

* 获取Http Authorization   -- Base64 Encode

*

* @return String

* @author Janesong on 2016-9-9

**/

public static String getHttpBasicAuth() {

String name = TestConfigUtil.getInstance().getMasterAPIOperator();

String password = TestConfigUtil.getInstance().getMasterAPIOperatePasswd();

String authString = name + ":" + password;

String authorizationHeaderValue = "Basic " + java.util.Base64.getEncoder().encodeToString(authString.getBytes());

return authorizationHeaderValue;

}

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值