请问用http-client 怎么样访问需要输入用户名密码的网页?

sund

问题描述

这里写问题描述
RT 需要访问的网页需要输入用户名密码,请问用http-client 怎么访问?

624 1 0
1个回答

ysbluo

https://www.workerman.net/doc/workerman/components/workerman-http-client.html
$http->post('https://example.com/', ['key1' => 'value1', 'key2' => 'value2'], function ($response) {
var_dump($response->getStatusCode());
echo $response->getBody();
}, function ($exception) {
echo $exception;
});

看表单的name属性,['key1' => 'value1', 'key2' => 'value2'],改成对应的,直接POST

  • sund 2022-10-19

    己经解决了,解决方法如下:
    $http->request($post, [
    'method' => 'GET',
    'version' => '1.1',
    'headers' => ['Connection' => 'keep-alive'],
    'headers' => ['Authorization' => 'Basic base64用户名:密码'],
    试了几种方法,这种行 Key value那个方法不知道为什么认证不能通过。这个是查看浏览器通讯数据得到的get的数据弄的。

  • ysbluo 2022-10-20

    获取的token是对的吗,你用的是哪一个jwt插件

  • ysbluo 2022-10-20

    你用的是POST,为什么用这个'method' => 'GET',呢

  • ysbluo 2022-10-20

    'headers' => ['Connection' => 'keep-alive'],
    'headers' => ['Authorization' => 'Basic base64用户名:密码'],
    改成
    'headers' => [
    'Connection' => 'keep-alive',
    'Authorization' => 'Basic base64用户名:密码'],
    不然会覆盖掉其中一个headers

  • sund 2022-10-23

    我试了几种方式,只有这种方式,能通过验证,用户名密码是打开浏览器的开发者模式看看到的。
    用get是因为我连接的设备只支持get.用post得不到数据。

  • sund 2022-10-23

    可能我连接的设备不需要'Connection' => 'keep-alive',还有就是我试了很多种方式,大部份实际发送的数据'Authorization' => 'Basic base64用户名:密码'],这个中间的base64用户名密码这段会发生变化,而不能通过验证。

年代过于久远,无法发表回答
🔝