0

我有一个应用程序(检查点防火墙)

使用 GET 方法从变量发送格式化 URL 以形成请求

https://api.example.com/http/sendmsg?api_id=$APIID&user=
$USERNAME&password=$PASSWORD&to=$PHONE&text=$MESSAGE

我想使用的网站是如何使用具有以下来源的 POST 方法的基本形式。

<html>
    <form method="post">
        Number:<input type="text" name="number"/><br/>
        Message:<textarea cols="40" rows="4" name="message"></textarea><br/>
        <input type="submit" value="send"/>
    </form>
</html>

我可以随意更改 URL 的格式,因为您可能猜到这是发送 SMS 文本消息。

有没有办法用 POST 方法格式化 URL,或者创建一个可以翻译请求的中间网页?

谢谢你

编辑

所以这就是我的想法

$number = ($_GET["number"]);
$message = ($_GET["message"]);

//for testing the get method echo variables on screen
echo("Number: " . $number . "<br />");
echo("Message: " . $message . "<br />");

//use curl to post variables to second website
$vars = "number-" . $number . "&message=2 . message;
$ch = curl_init( '10.43.23.53' );
curl_setopt( $ch, CURLOPT_POST, 1);
curl_setopt( $ch, CURLOPT_POSTFIELDS, $vars);
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1);

$response = curl_exec( $ch );

print_r(curl_getinfo($ch));

此脚本由网站托管,因此应用程序 A 可以使用其 GET 方法来提供变量,并且脚本将通过 post 将它们重新发布到应用程序 B。但是它不起作用,我没有从响应中得到任何结果?

4

2 回答 2

1

$apiKey = 'your-api-key-here';
$user = 'your-username-here';
$password = 'your-password-here';
$number = isset($_POST['number']) ? $_POST['number'] : null;
$message = isset($_GPOST['message']) ? $_POST['message'] : null;

$url = sprintf('https://api.example.com/http/sendmsg?api_id=%s&user= %s&password=%s&to=%s&text=%s',
    $apiKey, $user, $password, urlencodee($message)
);

// validating message etc. left to OP

$response = file_get_contents($url);
于 2012-11-19T13:22:50.697 回答
0

您将无法将 POST 作为 GET 发送,它们是不同的方法,并且 POST 需要随请求一起发送的变量在 GET 请求中不可用。

理论上,您可以创建一个中介,它接受初始 GET 请求并形成合适的 POST 请求并将其发送到目标服务器。这个的实际实现超出了这个问题的范围。

于 2012-11-19T13:12:39.237 回答