java调http接口 post方式请求 服务器识别全是乱码 服务器识别utf-8的内容 哪位大神知道怎么解决吗?

java调http接口 post方式请求 服务器识别全是乱码 服务器识别utf-8的内容 哪位大神知道怎么解决吗?,第1张

看下你post的方法,设置下这个

httpURLConnection.setRequestProperty("Charset", "utf-8")

拼接参数时:转一下格式

URLEncoder.encode(String.valueOf(value), "utf-8")

下面是我使用的POST方法,最简单的一种

Map<String, String> params = new HashMap<>() //参数

HttpURLConnection urlCon = null

URL urlInstance

StringBuilder sbResult = new StringBuilder()

try {

urlInstance = new URL(url)

urlCon = (HttpURLConnection) urlInstance.openConnection()

urlCon.setRequestMethod("POST")

urlCon.setDoOutput(true) // 是否可以发送数据服务器

urlCon.setDoInput(true) // 设置是否读服务端

urlCon.setUseCaches(false) // 设置是否缓存

urlCon.setConnectTimeout(15000)// 设置响应超时

// 固定格式

urlCon.setRequestProperty("Content-Type", "application/x-www-form-urlencoded")

urlCon.setRequestProperty("Charset", "utf-8")

// 对参数进行处理

String data = ""

if (params != null) {

String value

Set<String> set = params.keySet()// 获取到所有map的键

for (String string : set) {// 遍历参数,拼接data

value = params.get(string)

data += string + "=" + URLEncoder.encode(String.valueOf(value), "utf-8") + "&"

}

}

urlCon.setRequestProperty("Content-Length", String.valueOf(data.length())) // 设置长度

// 往服务器写入数据

OutputStream out = urlCon.getOutputStream()

out.write(data.getBytes())

out.flush()

// 接收服务器返回的数据

InputStream in = urlCon.getInputStream()

BufferedReader br = new BufferedReader(new InputStreamReader(in))

String line// 每一行的数据

while ((line = br.readLine()) != null) {

sbResult.append(line)

}

可能是编码问题,可以使用mb_convert_encoding转换编码或者iconv

string iconv ( string $in_charset , string $out_charset , string $str )

string mb_convert_encoding ( string $str , string $to_encoding [, mixed $from_encoding = mb_internal_encoding() ] )


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/787745.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-08-24
下一篇2023-08-24

发表评论

登录后才能评论

评论列表(0条)

    保存