Выполнить определенный HTTP POST, используя php - PullRequest
0 голосов
/ 20 мая 2018

Я хочу выполнить определенный пост HTTP, используя php (Да, это отличается от других потоков).Итак, URL с именем http://127.0.0.1:8060/PFOOptions/?PFOID=0x000000950C420940 имеет форму сообщения, которое я хочу выполнить с помощью php.Это выглядит так:

<form action="." method="post" enctype="multipart/form-data">

и кнопка отправки выглядит следующим образом.

<input type="submit" name="Okay" value="Okay">

Форма заполнена различными входными данными, такими как RemoteAdress и LocalPort .Я попробовал этот код для выполнения поста, но как код может узнать, какую конкретную форму я хочу выполнить?И что отправка имеет имя = "Хорошо".Где я могу разместить эту информацию?

<?php
$url = 'http://127.0.0.1:8060/PFOOptions/?PFOID=0x0000004C98FFBDD0';
$data = array('LocalPort' => '2743', 'RemoteAdress' => 'halo.com');

// use key 'http' even if you send the request to https://...
$options = array(
    'http' => array(
        'header'  => "Content-type: application/x-www-form-urlencoded\r\n",
        'method'  => 'POST',
        'content' => http_build_query($data)
    )
);
$context  = stream_context_create($options);
$result = file_get_contents($url, false, $context);
if ($result === FALSE) { /* Handle error */ }

var_dump($result);
?>

Что я пропускаю?

1 Ответ

0 голосов
/ 20 мая 2018

как код может узнать, какую конкретную форму я хочу выполнить?

В общем: не может.

Форма HTML в сочетании с пользовательским вводомв этой форме браузер сообщает, как создать HTTP-запрос.

Когда вы пишете PHP для выполнения HTTP-запроса, вам нужно написать PHP, который заменяет форму и ввод пользователя.


И что отправитель имеет имя = "Хорошо".Куда мне поместить эту информацию?

Кнопки отправки (если они используются для отправки формы) добавляют свое имя и значение к отправленным данным формы, как и любой другой элемент управления формы.

ИтакВы помещаете его в то же место в остальных данных формы.

то есть массив, который вы назначаете $data


Что я пропускаю?

Вы строите данные в формате application/x-www-form-urlencoded.

Вы также указали, что Content-Type должен быть application/x-www-form-urlencoded.

Хорошо, что они совпадают, однако в форме указано enctype="multipart/form-data", поэтому возможно, что URL-адрес, на который вы отправляете его, не поддерживает ввод application/x-www-form-urlencoded, и вам потребуется изменитьформат ваших данных .


Могут быть и другие факты, которые мы не можем определить по предоставленной вами информации, например, ожидание файла cookie для аутентификации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...