我想从我的Laravel项目中的API获得答案。显然,Guzzle似乎是最好的解决方案。 这是1.6.0b6版中的Check_MK API
我创建了一个与API进行通信的模型,以尊重MVC模型
模型
<?php
namespace App;
use GuzzleHttp\Client;
use GuzzleHttp\Psr7\Request;
class Hostgroup
{
public static function all() {
$client = new \GuzzleHttp\Client();
$request = new Request('GET', 'https://my-api-uri.tld', [
'query' => [
'action' => 'get_all_host',
'_username' => 'user',
'_secret' => 'secret',
'output_format' => 'json'
]]);
$hostgroup = $client->send($request, ['timeout' => 2]);
return $hostgroup;
}
}
控制器
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Hostgroup;
class MainDashboardController extends Controller
{
public function index() {
$hostgroup = Hostgroup::all();
return view('dashboard.main', [
'hostgroup' => $hostgroup
]);
}
}
当前我在项目页面上收到错误500,但API向我发送了带有请求标头的代码200。
实际上我知道了:
Response {#209 ▼
-reasonPhrase: "OK"
-statusCode: 200
-headers: array:9 [▶]
-headerNames: array:9 [▶]
-protocol: "1.1"
-stream: Stream {#207 ▼
-stream: stream resource @278 ▼
wrapper_type: "PHP"
stream_type: "TEMP"
mode: "w+b"
unread_bytes: 0
seekable: true
uri: "php://temp"
options: []
}
-size: null
-seekable: true
-readable: true
-writable: true
-uri: "php://temp"
-customMetadata: []
}
}
答案 0 :(得分:0)
$hostgroup
是您可能不想要的Psr\Http\Message\ResponseInterface
。您将需要响应的实际内容。尝试添加它:
return $hostgroup->getBody()->getContents();
答案 1 :(得分:0)
首先,我需要您按以下方式致电Guzzle: 替换:
pom.xml
使用:
import tkinter as tk
from tkinter import ttk
#custom color
BLUE = '#%02x%02x%02x' % (11, 69, 126)
mainWindow = tk.Tk()
mainWindow.geometry("250x100")
mainWindow.resizable(0, 0)
s = ttk.Style()
s.configure('Blue.TLabelframe.Label', font=('DejaVu Sans', 10, 'bold'))
s.configure('Blue.TLabelframe.Label', foreground = BLUE)
labelFrame = ttk.LabelFrame(mainWindow, text="Some Text", style= 'Blue.TLabelframe')
labelFrame.grid(column=0, row=0, sticky='nsew')
textLable = ttk.Label(labelFrame, text='Some Text inside the frame')
textLable.pack()
mainWindow.mainloop()
并调试来自函数ALL的响应 制作
$request = new Request('GET', 'https://my-api-uri.tld', [
并检查结果并比较API的功能。 并且也不需要使用thoese:
$request = $client->get('https://my-api-uri.tld', [