Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

Ответ
 
Опции темы
Старый 18.12.2017, 11:59   #1
SAMOUCHKA
Участник клуба
 
Регистрация: 07.08.2011
Адрес: Димитровград
Сообщений: 527
Репутация: 111

skype: ilya10009
По умолчанию передать информацию в $_POST

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

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

Последний раз редактировалось SAMOUCHKA; 18.12.2017 в 12:04.
SAMOUCHKA вне форума   Ответить с цитированием
Старый 18.12.2017, 12:54   #2
p51x
Профессионал
 
Регистрация: 15.02.2010
Сообщений: 10,864
Репутация: 1806

icq: 216409213
По умолчанию

Возьмите 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, 13:55   #3
SAMOUCHKA
Участник клуба
 
Регистрация: 07.08.2011
Адрес: Димитровград
Сообщений: 527
Репутация: 111

skype: ilya10009
По умолчанию

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

А вообще нужно вот что:
Есть 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 />
__________________
eremeew.ilya@yandex.ru
SAMOUCHKA вне форума   Ответить с цитированием
Старый 18.12.2017, 14:51   #4
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 23,417
Репутация: 5187
По умолчанию

а Вы код, который Вам предложил 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, 15:16   #5
SAMOUCHKA
Участник клуба
 
Регистрация: 07.08.2011
Адрес: Димитровград
Сообщений: 527
Репутация: 111

skype: ilya10009
По умолчанию

Цитата:
а Вы код, который Вам предложил 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>

__________________
eremeew.ilya@yandex.ru
SAMOUCHKA вне форума   Ответить с цитированием
Старый 18.12.2017, 15:42   #6
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 23,417
Репутация: 5187
По умолчанию

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

skype: ilya10009
По умолчанию

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

icq: 216409213
По умолчанию

Как обычно. Откройте rfc и прочитайте. Уходит POST, заголовки и в теле пары с параметрами.
__________________
Запомните раз и навсегда: помочь != "решите за меня"!
p51x вне форума   Ответить с цитированием
Старый 18.12.2017, 16:44   #9
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 23,417
Репутация: 5187
По умолчанию

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

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

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

всё.

или я не понял Ваш вопрос?
Serge_Bliznykov вне форума   Ответить с цитированием
Старый 18.12.2017, 16:52   #10
SAMOUCHKA
Участник клуба
 
Регистрация: 07.08.2011
Адрес: Димитровград
Сообщений: 527
Репутация: 111

skype: ilya10009
По умолчанию

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

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

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

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

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


07:05.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru