<?php
//initialize test values.
$results = [];
$smpUrls = [];
$client = new Client();
$authHeader = [
'cookies' => true,
'auth' => [$this->username, $this->password],
'json' => [
"alert" => 'test title',
"data" => 'test data sample'
],
'debug' => true,
'headers' => [
'Content-Type' => 'application/json',
'Cache-Control' => 'no-cache',
'X-SMP-DATA' => 'testng'
],
];
$technicianIds = ["123456"];
//preparing urls
foreach ($technicianIds as $technicianId) {
$smpUrl = 'http://10.11.1.5:8080/restnotification/application/com.****.test/user/' . $technicianId;
$smpUrls[$technicianId] = $smpUrl;
}
//generate function to deal with multiple requests.
$requests = function ($urls, $headers) {
foreach ($urls as $url) {
yield new Request('POST', $url, $headers);
}
};
/**
* initialize guzzle pool in order to deal with individual request
* response or exception
*/
$pool = new Pool($client, $requests($smpUrls, $authHeader), [
//process only four requests cuncurently.
'concurrency' => 4,
//deal with succesful request response.
'fulfilled' => function ($response, $index) use (&$results) {
//json decode output, collect name and append to result.
\Log::info('fullfilled-response');
\Log::info($response);
},
//deal with exception of individual request.
'rejected' => function ($reason, $index) use (&$results) {
\Log::info('rejected-reason');
\Log::info($reason);
}
]);
// Initiate the transfers and create a promise
$promise = $pool->promise();
// Force the pool of requests to complete.
$promise->wait();
return $results;
请看下面生成的guzzle请求数据。
GuzzleHttp\Psr7\Request Object
(
[method:GuzzleHttp\Psr7\Request:private] => POST
[requestTarget:GuzzleHttp\Psr7\Request:private] =>
[uri:GuzzleHttp\Psr7\Request:private] => GuzzleHttp\Psr7\Uri Object
(
[scheme:GuzzleHttp\Psr7\Uri:private] => http
[userInfo:GuzzleHttp\Psr7\Uri:private] =>
[host:GuzzleHttp\Psr7\Uri:private] => 10.11.1.5
[port:GuzzleHttp\Psr7\Uri:private] => 8080
[path:GuzzleHttp\Psr7\Uri:private] => /restnotification/application/com.*****.test/user/dileep
[query:GuzzleHttp\Psr7\Uri:private] =>
[fragment:GuzzleHttp\Psr7\Uri:private] =>
)
[headers:GuzzleHttp\Psr7\Request:private] => Array
(
[User-Agent] => Array
(
[0] => GuzzleHttp/6.2.1 curl/7.50.1 PHP/7.0.10
)
[Host] => Array
(
[0] => 10.11.1.5:8080
)
[cookies] => Array
(
[0] => 1
)
[auth] => Array
(
[0] => ******
[1] => ******
)
[json] => Array
(
[alert] => Test Title
[data] => test details testing
)
[debug] => Array
(
[0] => 1
)
[headers] => Array
(
[Content-Type] => application/json
[Cache-Control] => no-cache
[X-SMP-DATA] => testng
)
)
[headerNames:GuzzleHttp\Psr7\Request:private] => Array
(
[user-agent] => User-Agent
[host] => Host
[cookies] => cookies
[auth] => auth
[json] => json
[debug] => debug
[headers] => headers
)
[protocol:GuzzleHttp\Psr7\Request:private] => 1.1
[stream:GuzzleHttp\Psr7\Request:private] => GuzzleHttp\Psr7\Stream Object
(
[stream:GuzzleHttp\Psr7\Stream:private] => Resource id #378
[size:GuzzleHttp\Psr7\Stream:private] => 0
[seekable:GuzzleHttp\Psr7\Stream:private] => 1
[readable:GuzzleHttp\Psr7\Stream:private] => 1
[writable:GuzzleHttp\Psr7\Stream:private] => 1
[uri:GuzzleHttp\Psr7\Stream:private] => php://temp
[customMetadata:GuzzleHttp\Psr7\Stream:private] => Array
(
)
)
)
我在这里做错了什么?请分享你的想法。谢谢你。
不幸的是,我无法解决这个错误。似乎promise方法在我的情况下不起作用。
所以我所做的是在一个循环上迭代guzzle post。Guzzle post在我的情况下没有任何问题。
下面给出了在我的例子中工作的示例代码:
<?php
//initialize test values.
$results = [];
$smpUrls = [];
$client = new Client();
$authHeader = [
'cookies' => true,
'auth' => [$this->username, $this->password],
'json' => [
"alert" => 'test title',
"data" => 'test data sample'
],
'debug' => true,
'headers' => [
'Content-Type' => 'application/json',
'Cache-Control' => 'no-cache',
'X-SMP-DATA' => 'testng'
],
];
$technicianIds = ["123456"];
//preparing urls
foreach ($technicianIds as $technicianId) {
$smpUrl = 'http://10.11.1.5:8080/restnotification/application/com.****.test/user/' . $technicianId;
$results[] = $client->post($smpUrl, $authHeader);
}
return $results;
我正在尝试登录基于cloudflare服务器的网站。我使用cloudserver绕过了登录问题,但我的下一个停止点是当我试图发送get请求以访问一些登录后令牌时。 我的代码: 这返回401作为答案: 它的标题是 好的,我首先试着给一个auth。这样地 我再次得到相同的错误,401,但这次响应的头确实有一个www身份验证,我应该质询 根据我所读到的内容,它是基本的意味着我必须在我的头文件中添加一个像
我有一个在Azure网站上运行的标准Web API,启用了Azure AD身份验证,当在浏览器中浏览API时,我可以通过浏览器登录并获得对API的访问权。 但是,WPF桌面应用程序在提交请求时接收到未经授权的响应: 更新: 我已经在一个Azure帐户中重新创建了这个环境,我可以访问这个帐户,但仍然收到一个未经授权的响应(在浏览器中运行良好)。
我想使用服务帐户实现谷歌表API请求。我创建了这个代码: 但是我得到了这个错误: com.google.api.client.auth.oauth2.TokenResponseException: 401 未经授权 在这个方法中 你知道我该如何解决这个问题吗?
我的代码:GoogleCredential凭据 credential.refreshToken() 错误日志: 创建服务号的步骤: 我在凭据中的oauth 2.0中创建了一个Web应用程序 然后我用客户端ID创建了一个服务号 现在我正在使用这个服务号和从它生成的p12证书来验证和创建Google凭据的对象 一旦刷新令牌,我就给了我401例外。 在这种情况下,任何帮助都会受到感激
我已经为此挠头两天了。我使用WebAPI版本2.2和我使用CORS。这个设置工作在服务器端,我被允许从我的web客户端服务器代码获得授权的内容,但在我的ajax调用中获得未经授权的内容。 以下是我的配置: Web API配置 WebApiConfig: Startup.Auth.cs: (我已经尝试了app.UseCors(CorsOptions.AllowAll)和config.EnableCo
我在谷歌日历API工作。 问题是当使用刷新令牌时,我得到的是“请求失败:未授权(401)”(刷新令牌是因为用户不应该每次都需要登录) 对于在用户首次授权应用程序后检索的正常访问令牌(未过期),它可以正常工作。 下面是运行时url,它只在不使用刷新的访问令牌之前工作。