看下你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() ] )
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)