请选择 进入手机版 | 继续访问电脑版

bilibili用户反馈论坛

!header_login!

!bilibili_header_login_tip!

搜索
热搜: 番剧 播放
查看: 468|回复: 6

[功能探索] 关于对于APP下载地址的HTTP REQUEST

[复制链接]

2

主题

7

帖子

24

积分

小萌新

积分
24
发表于 2019-2-4 01:00:40 | 显示全部楼层 |阅读模式

点击网页右上角登录,为了打开新世界的大门

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
我是一名业余程序员
我在使用C++ WinINet/socket访问app下载地址:https://dl.hdslb.com/mobile/latest/iBiliPlayer-bili.apk的时候,服务器返回了HTTP/1.1 400 bad request的错误
细节如下:
  1. char req[4096];
  2. ZeroMemory( req , 4096 );
  3. strcat( req , ";GET /mobile/latest/iBiliPlayer-bili.apk HTTP/1.1\r\n"; );
  4. strcat( req , ";User-Agent: "; );
  5. strcat( req , UA );
  6. strcat( req , ";\r\n"; );
  7. strcat( req , ";Access: */*\r\n"; );
  8. strcat( req , ";Connection: close\r\n"; );
  9. strcat( req , ";\r\n"; );
复制代码
返回的是如图结果:
mad3.png
请大佬教教我为什么会出错
回复

使用道具 举报

2

主题

7

帖子

24

积分

小萌新

积分
24
 楼主| 发表于 2019-2-4 01:01:57 | 显示全部楼层
用相同的方法GET百度的页面出现的是302
回复 支持 反对

使用道具 举报

8

主题

484

帖子

2万

积分

版主

Rank: 7Rank: 7Rank: 7

积分
22933
发表于 2019-2-4 09:47:10 | 显示全部楼层
curl HEAD GET 均正常

                               
登录/注册后可看大图
本人虽为版主, 但和 Bilibili 并无雇佣关系, 一切言论不代表B站官方.
Bilibili 网络测试: https://love4taylor.me/bilitest
回复 支持 反对

使用道具 举报

2

主题

7

帖子

24

积分

小萌新

积分
24
 楼主| 发表于 2019-2-4 09:52:19 | 显示全部楼层
解决了!
原因:浏览器访问https://dl.hdslb.com/mobile/latest/iBiliPlayer-bili.apk可以下载,手写访问的时候要使用HTTP(80端口)而非HTTPS(443端口)。
具体原因未知,可能是HTTPS有其他东西???
使用sin_addr.S_un.s_addr = htons(80)后发送数据会正常显示HTTP/1.1 200 OK字样 good.png
我把REQUEST方式换成HEAD,节省流量(我拿手机给电脑开热点是不是有点。。。)
回复 支持 反对

使用道具 举报

2

主题

7

帖子

24

积分

小萌新

积分
24
 楼主| 发表于 2019-2-4 09:55:11 | 显示全部楼层

我用的是手写代码。。。
我在我的服务器上curl和wget正常。。。
但用HttpOpenRequest()后HttpSendRequest()就出现问题,HttpQueryInfo()参数写HTTP_QUERY_RAW_HEADERS_CRLF查看原因,都是400 bad request。。。
后面我换成HTTP(80端口)就没问题了。。。
回复 支持 反对

使用道具 举报

2

主题

7

帖子

24

积分

小萌新

积分
24
 楼主| 发表于 2019-2-4 09:56:11 | 显示全部楼层

我用的是手写代码。。。
我在我的服务器上curl和wget正常。。。
但用HttpOpenRequest()后HttpSendRequest()就出现问题,HttpQueryInfo()参数写HTTP_QUERY_RAW_HEADERS_CRLF查看原因,都是400 bad request。。。
后面我换成HTTP(80端口)就没问题了。。。
回复 支持 反对

使用道具 举报

2

主题

7

帖子

24

积分

小萌新

积分
24
 楼主| 发表于 2019-2-4 10:12:43 | 显示全部楼层
[color='999999]Toxic_Obsidian 发表于 2019-2-4 09:56
我用的是手写代码。。。
我在我的服务器上curl和wget正常。。。
但用HttpOpenRequest()后HttpSendRequest ...

最后解决了,
我蠢了。。。
访问443端口要使用WinINet的INTERNET_FLAG_SECURE或者socket+OpenSSL才行。。。
算是解决了吧。。。花了我一天时间qwq
回复 支持 反对

使用道具 举报

您需要登录后才可以发帖 登录

本版积分规则

用户须知|手机版|小黑屋|bilibili  

GMT+8, 2019-9-18 15:34 , Processed in 0.076758 second(s), 20 queries , Xcache On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表