[英]Python Post to PHP Post
我想知道這是否可以在 PHP 和 curl 或 file_get_contents 中實現。
我有一些 Python 代碼:
body = json.dumps({
'agent': {
'name': 'Minecraft',
'version': 1
},
'username': email,
'password': password,
'clientToken': "fff"
})
r = requests.post(url="https://authserver.mojang.com/authenticate", headers=header, data=body)
CURL 中的等效項是什么? 因為我在 PHP 中嘗試了一些變化,但無法讓它工作。
PHP 代碼,我試過:
$parameters = [
'agent' => [
'name' => 'Minecraft',
'version' => 1
],
'username' => $email,
'password' => $password,
'clientToken' => 'fff'
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"https://authserver.mojang.com/authenticate");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,$parameters); //Post Fields
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$headers = array(
'Accept: application/json',
'Content-Type: application/json',
);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$response = curl_exec($ch);
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close ($ch);
但我得到回應:
{"error":"JsonParseException","errorMessage":"Unexpected character ('-' (code 45)) in numeric value: expected digit (0-9) to follow minus sign, for valid numeric value\n at [Source: (org.eclipse.jetty.server.HttpInputOverHTTP); line: 1, column: 3]"}
如果有人對此有任何見解,請回復此問題!
您的問題在於創建身份驗證 object。 您正在創建一個 PHP 數組(您需要一個對象),並且在發送之前您沒有轉換為 JSON。
創建身份驗證 object 作為 object,然后使用json_encode()
創建 JSON 字符串,並將其用作您的有效負載。
<?php
// Display some error s for this development code
error_reporting(E_ALL);
ini_set('display_errors',1);
// Create the authentication object
$params = (object)[];
$params->agent = (object)['name'=>"MineCraft", 'version'=>'1'];
$params->username = "email";
$params->password='password';
$params->clientToken='fff';
// Now create the payload for cURL to use in its POST
$payload = json_encode($params);
// Set headers to match payload
$headers = array(
'Accept: application/json',
'Content-Type: application/json',
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"https://authserver.mojang.com/authenticate");
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,$payload); //Post Fields
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
$curlInfo = curl_getinfo($ch);
curl_close ($ch);
// Ok - see what we got.
echo "----------------------------<br>\n";
var_dump($response);
echo "----------------------------<br>\n";
var_dump($curlInfo);
這段代碼給出了這個結果:
{"error":"ForbiddenOperationException","errorMessage":"Invalid credentials. Invalid username or password."}
由於我在 Mojang 沒有用戶名或密碼,這就是我所期望的
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.