Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 努力与当前的web API通信_Javascript_Php_Utorrent - Fatal编程技术网

Javascript 努力与当前的web API通信

Javascript 努力与当前的web API通信,javascript,php,utorrent,Javascript,Php,Utorrent,我正在尝试访问utorrents web api,它使用一个令牌身份验证系统,详细说明如下 我页面上的JavaScript是 <script> $.getJSON("http://XXX.XXX.XXX.XXX/lib/token.php", function(response) { var head = document.getElementsByTagName('head')[0];

我正在尝试访问utorrents web api,它使用一个令牌身份验证系统,详细说明如下

我页面上的JavaScript是

        <script>
            $.getJSON("http://XXX.XXX.XXX.XXX/lib/token.php", function(response) {
                var head = document.getElementsByTagName('head')[0];
                var script = document.createElement('script');
                script.type = 'text/javascript';
                //script.onreadystatechange = function () {
                //    if (this.readyState == 'complete') utorrent();
                //}
                //script.onload = utorrent();
                script.src = 'http://XXX.XXX.XXX.XXX:8080/gui/?list=1&token=' + response.token;
                head.appendChild(script);
            });
        </script>

$.getJSON(“http://XXX.XXX.XXX.XXX/lib/token.php“,功能(响应){
var head=document.getElementsByTagName('head')[0];
var script=document.createElement('script');
script.type='text/javascript';
//script.onreadystatechange=函数(){
//如果(this.readyState=='complete')utorrent();
//}
//script.onload=utorrent();
script.src=http://XXX.XXX.XXX.XXX:8080/gui/?list=1&token='+response.token;
head.appendChild(脚本);
});
只要从一个php文件中检索令牌并沿着链传递它,我就已经确认令牌正在被传递并且没有中毒,我的php文档如下

<?php
header('Content-type: text/json');
$token = file_get_contents('http://[username]:[password]@XXX.XXX.XXX.XXX:8080/gui/token.html');
$token = str_replace("<html><div id='token' style='display:none;'>", "", $token);
$token = str_replace("</div></html>", "", $token);
$response = array('token' => $token);
echo json_encode($response);
?>

这给了我一个令牌的确认 对象{token:“GMt3ryaJE64YpXGN75-RhSJg-4gOW8n8XfTGYk_ajpjnlinlisr3nsc8tn1eaaaaa”}

但是当检索列表时,我收到一个400错误代码 获取400(错误)


非常感谢任何帮助/想法/想法

使用
text/plain
application/json
,而不是
text/json


application/json
有时会导致Chrome出现问题,因此在这种情况下,您可能需要坚持使用
text/plain
。使用
text/plain
application/json
,而不是
text/json


application/json
有时会导致Chrome出现问题,因此在这种情况下,您可能需要坚持使用
text/plain

400错误消息表示您正在与错误请求通信。
JSON文本的MIME媒体类型为application/JSON

400错误消息表示您正在与错误请求通信。
JSON文本的MIME媒体类型为application/JSON

只是加上我的2美分

我在.NET MVC中也做过类似的实现——我能够像您一样获得令牌,但是list=1功能对我也不起作用,获得了400个错误的请求代码(正如您所发现的)

我的解决方案是: 在token.html响应中,div中有一个令牌,头中也有一个GUID

要分解它:

  • 使用当前凭据调用token.html
  • 在响应内容中,解析html以获取令牌
  • 在响应头中,有一个key
    Set Cookie
    值,如下所示

    设置Cookie:GUID=

  • 我需要在所有被发回的请求中使用这个值(
    GUID=
    ),以及令牌,并且它工作了

  • 但是,我不确定PHP中的实现是什么:)

    另外请注意,我一直在尝试通过jQuery的
    $.getJSON
    $.Ajax
    方法获取值,但没有成功,因为我使用的浏览器(chrome)对跨域请求有严格的指导原则,而且看起来uTorrent没有实现
    JSONP


    希望这有帮助

    只是加上我的2美分

    我在.NET MVC中也做过类似的实现——我能够像您一样获得令牌,但是list=1功能对我也不起作用,获得了400个错误的请求代码(正如您所发现的)

    我的解决方案是: 在token.html响应中,div中有一个令牌,头中也有一个GUID

    要分解它:

  • 使用当前凭据调用token.html
  • 在响应内容中,解析html以获取令牌
  • 在响应头中,有一个key
    Set Cookie
    值,如下所示

    设置Cookie:GUID=

  • 我需要在所有被发回的请求中使用这个值(
    GUID=
    ),以及令牌,并且它工作了

  • 但是,我不确定PHP中的实现是什么:)

    另外请注意,我一直在尝试通过jQuery的
    $.getJSON
    $.Ajax
    方法获取值,但没有成功,因为我使用的浏览器(chrome)对跨域请求有严格的指导原则,而且看起来uTorrent没有实现
    JSONP


    希望这有帮助

    您是否尝试过更改查询参数的顺序

    例如:
    http://localhost:8080/gui/?token=&list=1

    参考:


    更新 我在尝试用python为utorrent客户端创建和安装XMPPBot时遇到了类似的问题

    @m、 贝内特是对的。您还需要保存会话信息

    当您从token.html收到响应时,还可以捕获cookie信息。 通常有两个参数:GUID和会话。您需要将它们放在所有后续请求的头中——List API、Getfiles API等


    这应该可以解决你的问题

    您是否尝试过更改查询参数的顺序

    例如:
    http://localhost:8080/gui/?token=&list=1

    参考:


    更新 我在尝试用python为utorrent客户端创建和安装XMPPBot时遇到了类似的问题

    @m、 贝内特是对的。您还需要保存会话信息

    当您从token.html收到响应时,还可以捕获cookie信息。 通常有两个参数:GUID和会话。您需要将它们放在所有后续请求的头中——List API、Getfiles API等

    这应该可以解决你的问题