使用Linnworks API的PHP Rest API发布请求

时间:2015-06-19 12:02:27

标签: php api rest

我是REST API的新手,我正在尝试开始使用Linnworks API作为我们的订单管理软件。作为一个起点,我试图使用一个帖子请求来简单地使用它的GUID获得1个项目的当前库存水平。

此请求的文档可在此处查看:

http://apidoc.linnworks.net/Home/ApiMethod/GetStockLevel

我已经完成了帖子请求的第一阶段,使用用户ID和密码发出了令牌,如下所述:

http://apidoc.linnworks.net/Home/Page/Auth%20Introduction

我现在尝试使用stream_context_create创建一个帖子请求,以及我一直在阅读的很多博客帖子中的信息。我写了以下代码,但一直是空白屏幕甚至没有警告或错误消息。谁能看到我错在哪里?我是新手,所以我可能会遗漏一些重要的东西。出于安全考虑,我省略了我的令牌:

<?php

$postdata = array(
    'stockItemId' => 'bb0ef47f-f3fe-47b4-8863-ddfe8bc69b29'
    );

$opts = array('http' =>
    array(
        'method' => 'POST',
        'protocol_version' => 1.1,
        'header' => 
                    'Authorization: Token my-token-here\r\n'.
                    'Host: eu1.linnworks.net\r\n'.
                    'Content-Type: application/x-www-form-urlencoded\r\n'.
                    'Accept-Language: en\r\n',
        'content' => $postdata
        )
    );

$context = stream_context_create($opts);

$result = file_get_contents('https://eu1.linnworks.net//api/Stock/GetStockLevel',false, $context);

echo $result;
?>

当对每个变量执行var_dump时,如果这有帮助,我会得到以下内容:

Var Dump:$ postdata

array(1) { ["stockItemId"]=> string(36) "bb0ef47f-f3fe-47b4-8863-ddfe8bc69b29" } 

Var Dump:$ opts

array(1) { ["http"]=> array(4) { ["method"]=> string(4) "POST" ["protocol_version"]=> float(1.1) ["header"]=> string(162) "Authorization: Token my-token-here\r\nHost: eu1.linnworks.net\r\nContent-Type: application/x-www-form-urlencoded\r\nAccept-Language: en\r\n" ["content"]=> array(1) { ["stockItemId"]=> string(36) "bb0ef47f-f3fe-47b4-8863-ddfe8bc69b29" } } } 

Var Dump:$ context

resource(2) of type (stream-context) 

Var Dump:$ result

bool(false)

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:1)

我刚刚开始使用Linnworks进行开发,至少可以说文档是无益的。

但是,根据我的经验,有两点需要注意。一,要获得AuthorisationByApplication,您必须使用不同的服务器来返回有效的令牌:

  

https://api.linnworks.net/api/Auth/AuthorizeByApplication

另一个来自应用程序授权帐户的请求。以下是我获取帐户类别的功能:

$paras = array(
'token' => $u->Token
);

getLinn('Inventory/GetCategories', $paras);

function getLinn($method, $paras)
{
$url = 'https://eu1.linnworks.net/api/' . $method;
$aHttp = array(
    'http' => array(
        'method' => 'POST',
        'content' => '',
        'header' => ["Authorization: " . $paras['token'],
            "Transfer-Encoding: chunked",
            "Content-Encoding: chunked",
            "Content-type: application/x-www-form-urlencoded"
        ]
    )
);
//print_r($aHttp);
$context = stream_context_create($aHttp);
$contents = file_get_contents($url, false, $context);

return $contents;
}

希望这有助于将来的某些人:)