簡體   English   中英

Python 發布到 PHP 發布

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM