Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.12.2017, 10:59   #1
SAMOUCHKA
Форумчанин
 
Регистрация: 07.08.2011
Сообщений: 576
По умолчанию передать информацию в $_POST

В качестве клиента не браузер, а своя программа на Java.
Скажите пожалуйста, что должен передать мой клиент PHP серверу, что бы записать информацию в массив $_POST

К примеру - как из моего клиента, записать на сервере
$_POST['name'] = 'Vasya';

Последний раз редактировалось SAMOUCHKA; 18.12.2017 в 11:04.
SAMOUCHKA вне форума Ответить с цитированием
Старый 18.12.2017, 11:54   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Возьмите http://hc.apache.org/ и напишите типа:
Код:
HttpClient httpclient = HttpClients.createDefault();
HttpPost httppost = new HttpPost("http://www.google.com/");

List<NameValuePair> params = new ArrayList<NameValuePair>(1);
params.add(new BasicNameValuePair("name", "Vasya"));
httppost.setEntity(new UrlEncodedFormEntity(params, "UTF-8"));

HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();

if (entity != null) {
    InputStream instream = entity.getContent();
    try {
        // do something useful
    } finally {
        instream.close();
    }
}
p51x на форуме Ответить с цитированием
Старый 18.12.2017, 12:55   #3
SAMOUCHKA
Форумчанин
 
Регистрация: 07.08.2011
Сообщений: 576
По умолчанию

Спасибо! разбираюсь, честно говоря пока мало что понял.

А вообще нужно вот что:
Есть PHP сервер с БД MySQL. Мне нужно получать информацию из БД. Я хотел что бы мой клиент передавал ключ в массив $_POST, на сервере. По этому ключу вытаскиваем нужное из БД и отправляем клиенту.

Как работать с БД и отправить клиенту, в PHP, я знаю.

Вопрос что должен передавать клиент серверу?
Вот нашел пример подобного клиента на Java:
Код:
public class TestClient 
{

	public static void main(String[] args)
	{
		// TODO Auto-generated method stub

		System.out.println("Test Http client");
		
		int id = 45;
		
		try
		{
			String lnk = "https://eremeew-ilya.000webhostapp.com/script_1.php";
			
			String data = URLEncoder.encode("id", "UTF-8") + "-" + id;//
			
			URL url = new URL(lnk);
			URLConnection conn = url.openConnection();
			conn.setDoOutput(true);
			System.out.println("connect");
			
			OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
			wr.write(data);
			wr.flush();
			System.out.println("write");
			
			System.out.println("Read:");
			BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
			StringBuilder sb = new StringBuilder();
			String line = null;
			while((line = reader.readLine()) != null)
			{
				sb.append(line);
				//break;
			}
			System.out.println(sb);
		}
		catch(Exception e)
		{
			e.printStackTrace();
		}
	}

}
А вот PHP скрипт, пока безо всяких баз данных. Просто хочу чтобы он
обратно отправил информацию клиенту (эхо).
Код:
<?php
	echo "TEST SCRIPT";
	
	$id = $_POST['id'];
	echo $id;
?>
Клиент должен получить ответ 45. В реальности получаю такой ответ:
TEST SCRIPT<br /><b>Notice</b>: Undefined index: id in <b>/storage/ssd4/061/3883061/public_html/script_1.php</b> on line <b>4</b><br />
SAMOUCHKA вне форума Ответить с цитированием
Старый 18.12.2017, 13:51   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

а Вы код, который Вам предложил p51x попробовали?

Вам не кажется, что
Цитата:
Сообщение от p51x Посмотреть сообщение
Код:
HttpClient httpclient = HttpClients.createDefault();
HttpPost httppost = new HttpPost("http://www.google.com/");

List<NameValuePair> params = new ArrayList<NameValuePair>(1);
params.add(new BasicNameValuePair("name", "Vasya"));
httppost.setEntity(new UrlEncodedFormEntity(params, "UTF-8"));

HttpResponse response = httpclient.execute(httppost);
отличается от того, что Вы написали?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 18.12.2017, 14:16   #5
SAMOUCHKA
Форумчанин
 
Регистрация: 07.08.2011
Сообщений: 576
По умолчанию

Цитата:
а Вы код, который Вам предложил p51x попробовали?
Нет не пробовал пока. Но ОБЯЗАТЕЛЬНО по пробую.

Не как не могу найти что отправляет браузер серверу если есть такая форма
Код:
<h2>Введи свои данные:</h2>
<form action="display.php" method="POST">
<p>Введите имя: <input type="text" name="firstname" /></p>
<p>Введите фамилию: <input type="text" name="lastname" /></p>
<input type="submit" value="Отправить">
</form>
SAMOUCHKA вне форума Ответить с цитированием
Старый 18.12.2017, 14:42   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от SAMOUCHKA Посмотреть сообщение
Не как не могу найти что отправляет браузер серверу если есть такая форма
отправление происходит в обработчик "display.php"
передаются методом POST данные формы, а конкретно:
firstname
lastname
Serge_Bliznykov вне форума Ответить с цитированием
Старый 18.12.2017, 14:52   #7
SAMOUCHKA
Форумчанин
 
Регистрация: 07.08.2011
Сообщений: 576
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
отправление происходит в обработчик "display.php"
передаются методом POST данные формы, а конкретно:
firstname
lastname
Да. но что конкретно "методом POST"? Как это происходит в прикладном протоколе?
SAMOUCHKA вне форума Ответить с цитированием
Старый 18.12.2017, 15:32   #8
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Как обычно. Откройте rfc и прочитайте. Уходит POST, заголовки и в теле пары с параметрами.
p51x на форуме Ответить с цитированием
Старый 18.12.2017, 15:44   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от SAMOUCHKA Посмотреть сообщение
Как это происходит в прикладном протоколе?
либо я не понял вопроса, либо Вы чего-то странного хотите.

"Методом POST" - это означает, что данные будут переданы не через URL (не через командную строку), а через значения внутри запроса (данные, переданные таким образом, идут не в URL документа, а в теле запроса, после заголовков).
Как это реализовано конкретно - смотрите в описании протокола (это зависит от версии HTTP, например). Можете почитать об этом: POST (HTTP) (википедия)

Но зачем Вам это?
За Вас уже этот вопрос решён разработчиками библиотеки.
Ваша задача
1) подготовить параметры запроса (это, например, те самые пары BasicNameValuePair())
2) отправить запрос по нужному адресу с передачей этих параметров
3) получить ответ на запрос.

всё.

или я не понял Ваш вопрос?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 18.12.2017, 15:52   #10
SAMOUCHKA
Форумчанин
 
Регистрация: 07.08.2011
Сообщений: 576
По умолчанию

Конкретно задача такая:
реализовать клиенты на Java и C++ Qt. для начала на джаве

клиент работает с PHP сервером, на нем так же ест SQL база данных.

клиент передает id SQL записи и получает ответ.

PHP знаю не много, вытащить данные из SQL смогу.
Ну я и решил id через метод POST передавать, как в браузере. Может и как то по другому можно?
SAMOUCHKA вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
передать информацию из listbox в MySQL martofpain Компоненты Delphi 0 15.03.2016 05:56
задача перевести текст в звуковой формат (передать информацию в виде звука) СергейБелов Фриланс 15 05.05.2013 17:16
Можно ли передать информацию методом POST на web-страницу, без наличия формы? Arassir PHP 3 03.06.2011 16:25
функция $_POST Losvegas PHP 1 17.03.2011 11:34
Передать информацию из одного приложения вдругое Sergey2 Общие вопросы Delphi 2 11.10.2009 00:04