首页 > 其他分享 >http请求问题

http请求问题

时间:2023-11-16 21:12:11浏览次数:37  
标签:http 请求 inputStream 问题 new close httpUrlConn null String

在建立http请求的时候,一定要注意请求格式:

public static JSONObject httpRequest(String requestUrl, String requestMethod, String outputStr) {
JSONObject jsonObject = null;
StringBuffer buffer = new StringBuffer();
try {

URL url = new URL(requestUrl);
//注意这边是https的请求,所以在发送请求的时候,也必须是https的,如果是http的请求,就会出现问题
HttpsURLConnection httpUrlConn = (HttpsURLConnection) url.openConnection();

httpUrlConn.setDoOutput(true);
httpUrlConn.setDoInput(true);
httpUrlConn.setUseCaches(false);
// 设置请求方式(GET/POST)
httpUrlConn.setRequestMethod(requestMethod);

if ("GET".equalsIgnoreCase(requestMethod)) {
httpUrlConn.connect();
}

// 当有数据需要提交时
if (null != outputStr) {
OutputStream outputStream = httpUrlConn.getOutputStream();
// 注意编码格式,防止中文乱码
outputStream.write(outputStr.getBytes("UTF-8"));
outputStream.close();
}

// 将返回的输入流转换成字符串
InputStream inputStream = httpUrlConn.getInputStream();
InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "UTF-8");
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

String str = null;
while ((str = bufferedReader.readLine()) != null) {
buffer.append(str);
}
bufferedReader.close();
inputStreamReader.close();
// 释放资源
inputStream.close();
inputStream = null;
httpUrlConn.disconnect();
jsonObject = JSONObject.fromObject(buffer.toString());
} catch (ConnectException ce) {
log.error("Weixin server connection timed out.");
} catch (Exception e) {
log.error("https request error:{}", e);
}
return jsonObject;
}

如果http和https不匹配会出现以下异常:

javax.net.ssl.SSLException: Unsupported or unrecognized SSL message

public static JSONObject httpRequest(String requestUrl, String requestMethod, String outputStr) {
JSONObject jsonObject = null;
StringBuffer buffer = new StringBuffer();
try {

URL url = new URL(requestUrl);
HttpsURLConnection httpUrlConn = (HttpsURLConnection) url.openConnection();

httpUrlConn.setDoOutput(true);
httpUrlConn.setDoInput(true);
httpUrlConn.setUseCaches(false);
// 设置请求方式(GET/POST)
httpUrlConn.setRequestMethod(requestMethod);

if ("GET".equalsIgnoreCase(requestMethod)) {
httpUrlConn.connect();
}

// 当有数据需要提交时
if (null != outputStr) {
OutputStream outputStream = httpUrlConn.getOutputStream();
// 注意编码格式,防止中文乱码
outputStream.write(outputStr.getBytes("UTF-8"));
outputStream.close();
}

// 将返回的输入流转换成字符串
InputStream inputStream = httpUrlConn.getInputStream();
InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "UTF-8");
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

String str = null;
while ((str = bufferedReader.readLine()) != null) {
buffer.append(str);
}
bufferedReader.close();
inputStreamReader.close();
// 释放资源
inputStream.close();
inputStream = null;
httpUrlConn.disconnect();
jsonObject = JSONObject.fromObject(buffer.toString());
} catch (ConnectException ce) {
log.error("Weixin server connection timed out.");
} catch (Exception e) {
log.error("https request error:{}", e);
}
return jsonObject;
}

标签:http,请求,inputStream,问题,new,close,httpUrlConn,null,String
From: https://www.cnblogs.com/xzlnuli/p/17837273.html

相关文章

  • Redis 缓存系统常见问题及解决方案(缓存击穿,缓存穿透,缓存雪崩)
    1、缓存穿透缓存穿透指当用户在Redis缓存系统执行一条无效查询时,这条无效查询将穿透Redis缓存系统并向MySQL数据库请求数据,而MySQL数据库也获取不到数据。黑客可以利用缓存穿透原理,恶意执行大量无效查询,这将会对MySQL数据库的访问造成很大的压力解决方法:1、缓存......
  • python 处理html中 class中存在空格 获取问题
     html="""<h1class='tdp1'>0000000000000000000000000</h1><h1class='tdp2'>123333333333333333333</h1><h1class='p2'>111111111111111111111111111111111111<......
  • HTTP 响应字段 Transfer-Encoding 的作用介绍
    Transfer-Encoding字段是HTTP响应头部的一部分,用于指示在传输响应正文(responsebody)时所使用的传输编码方式。在HTTP通信中,响应正文可以以多种不同的编码方式传输,其中一种方式是chunked传输编码。本文将详细介绍Transfer-Encoding字段的含义和chunked传输编码,以及提供示例来解释这......
  • 服务器未正确处理预检请求,解决办法
    这个错误提示表明浏览器已经阻止了跨域请求,因为服务器未正确处理预检请求。预检请求是浏览器在发送跨域请求之前,先向服务器发送一个OPTIONS请求,以确定服务器是否接受跨域请求,并确定可以使用哪些HTTP方法和请求头。为了解决这个问题,您需要在服务器端添加处理预检请求的代码。......
  • 记录一下oracle index skip引起 temp表空间暴涨问题
    1.indexskip这个东西发现有执行计划走他的时候一定要注意了,这玩意还会出发sort排序功能,所以会大量使用你的临时表空间  看到走了indexskip然后还有buffersort大概能猜到,这个走了比较差的索引了,然后继续查看CRS_P_GU_INSECACCT表上的索引发现有一个复合索引,就是执行计......
  • sc3336 接到pico上就疯狂重启吗? 断开就没事, 使用原厂镜像也有问题
    SC3336接到PICO上出现频繁重启的问题可能涉及多个方面,包括驱动程序、硬件兼容性、系统设置等。以下是一些建议和可能的解决方案:驱动程序问题:确保你使用的SC3336驱动程序与PICO设备和操作系统兼容。从官方网站或设备制造商处下载并安装最新的驱动程序。硬件兼容性:检查SC33......
  • element UI (input输入框clearable)不生效问题
    问题:el-input里自带了一个属性clearable,可以清楚输入框内容。但是有的时候清除无效,可能有如下情况:1.clear删除无效,可以绑定clear事件解决,@clear="handleClear";html:<el-form:label-position="labelPosition"label-width="100px":model="form"><el-form-i......
  • 鼠标拖拽拖动盒子时,与盒子内某些点击事件冲突问题解决
    问题:拖动时会触发圆球的点击事件解决鼠标拖动盒子时,将moving设为true意为正在拖动盒子,此时将class="move"遮挡容器展示在悬浮球上层,以覆盖悬浮球,此时也就不存在触发悬浮球点击事件的冲突了;鼠标拖动完盒子弹起时再将 moving设为false意为不在拖动盒子(遮挡容器class=......
  • 解决umi 不是内部或外部命令,也不是可运行程序问题
    https://www.pianshen.com/article/93281659914/https://blog.csdn.net/calm_encode/article/details/107640909......
  • 华为云服务器使用acme.sh生成证书及遇到的问题
     参考资料:https://blog.csdn.net/Dancen/article/details/121044863https://blog.csdn.net/weixin_52270081/article/details/126777550如果要管理你的证书,到https://app.zerossl.com/用邮箱注册,假设为[email protected]安装:curlhttps://get.acme.sh|sh-semail......