为了账号安全,请及时绑定邮箱和手机立即绑定

Http(s) 请求以垃圾字符响应

Http(s) 请求以垃圾字符响应

一只甜甜圈 2021-10-06 10:15:49
我正在尝试向网站发送请求以从中获取一些数据。但是,响应是垃圾字符,例如:Ì 3ú¢¸<N¤@H±ü>§#Fe®¡+K·fÐcıaOqâò;'Êù!°â<rº\¼YDóß1K`òúüb¨ÑTcíÆ这只发生在有数据的休息时,错误也能正常工作。响应应该是这样的(来自浏览器请求): {"d":[{"__type":"CalendarTransport:http:...","activityId":2662,"activityImportIdentifier":null,"activityType":1,"allDay":false,"attendanceMode":1,....这是我的代码        try        {            HttpsURLConnection httpsURLConnection;            httpsURLConnection = (HttpsURLConnection) new URL("https", redacted, redacted).openConnection();            try            {                httpsURLConnection.setRequestMethod("POST");            }            catch (Exception e)            {                Log.d(TAG, "doInBackground: oh no (3) it's a " + e.toString());            }            httpsURLConnection.setRequestProperty("Accept-Charset", "*/*");            httpsURLConnection.setRequestProperty("Accept-Encoding", "gzip, deflate, br");            httpsURLConnection.setRequestProperty("Connection", "keep-alive");            httpsURLConnection.setRequestProperty("Content-Type", "application/json");            httpsURLConnection.setRequestProperty("Cookie", new DomainCookies(redacted).toRequestHeader());            httpsURLConnection.setDoOutput(true);            httpsURLConnection.setDoInput(true);            OutputStream os = httpsURLConnection.getOutputStream();            OutputStreamWriter osw = new OutputStreamWriter(os, "UTF-8");            osw.write(redacted);            osw.flush();            osw.close();            os.close(); 浏览器可以得到很好的响应,它一定是我正在做的事情(或 android,但我怀疑)
查看完整描述

1 回答

?
慕尼黑的夜晚无繁华

TA贡献1864条经验 获得超6个赞

我将从摆脱这一行开始:

httpsURLConnection.setRequestProperty("Accept-Encoding", "gzip, deflate, br");

您的代码不处理这些形式的数据编码,因此不要要求服务器以这种方式对数据进行编码。

除此之外……现在是 2018 年。停止使用HttpsURLConnection. 使用更现代且不易出错的东西,例如OkHttp


查看完整回答
反对 回复 2021-10-06
  • 1 回答
  • 0 关注
  • 149 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信