PHP получает запрос POST от Java - PullRequest
1 голос
/ 28 января 2012

РЕДАКТИРОВАТЬ: это то, что показано в журналах моего сайта xx.xx.xxx.xx - - [27 / Jan / 2012: 17: 42: 24 -0500] "POST /dir/addData2.php HTTP / 1.1"200 - www.mywebsites.com "-" "Java / 1.7.0" "-"

Я размещаю свой веб-сайт с номерами 1 и 1, и мне нужна страница blank.php, которая должна принимать запрос POST изагрузить его в мою базу данных.Я думаю, что отправляю свой POST правильно, и что почему-то я не обращаюсь с ним должным образом на моем веб-сайте.Потому что ничего не вставляется в мою базу данных.Ответ имеет длину содержимого 0, но даже если я отправлю заголовок с длиной строки, он не изменится.Другой вариант заключается в том, что хост не позволяет мне делать удаленные почтовые запросы (все еще ожидая ответа).

Я отправляю запрос на публикацию из приложения Java следующим образом:

URL url = new URL("www.mywebsite.com/blank.php");    
HttpURLConnection request = (HttpURLConnection)url.openConnection();
request.setRequestProperty("Content-type","application/x-www-form-urlencoded");
request.setRequestMethod("POST");
OutputStreamWriter post = new OutputStreamWriter(request.getOutputStream());
String data = URLEncoder.encode("account", "UTF-8") + "=" + URLEncoder.encode(message[0], "UTF-8");
data += "&" + URLEncoder.encode("message", "UTF-8") + "=" + URLEncoder.encode(message[2], "UTF-8");
data += "&" + URLEncoder.encode("type", "UTF-8") + "=" + URLEncoder.encode(message[0], "UTF-8");
post.write(data);
post.flush();
/*
/ String example
/account=103&message=Feller+1391.88+0&type=103
*/

Ответ от сервера:

null=[HTTP/1.1 200 OK]
Date=[Fri, 27 Jan 2012 21:59:10 GMT]
Content-Length=[0]
Keep-Alive=[timeout=2, max=200]
Connection=[Keep-Alive]
Content-Type=[text/html]
Server=[Apache]
X-Powered-By=[PHP/5.2.17]

Моя веб-страница имеет этот базовый код PHP(прямо сейчас, улучшу / проверю вещи позже)

$link = mysql_connect($hostname, $username, $password);
$db_selected = mysql_select_db($database, $link);
$query = "INSERT INTO newData(account, message, type) VALUES('$_POST[account]', '$_POST[message]', '$_POST[type]')";
mysql_query($query) || die();

Я хочу отметить, что у меня нет частного сервера, и я, вероятно, буду использовать http://hc.apache.org/httpcomponents-core-ga/examples.html позже.Сейчас я просто хочу отправить строку из моего Java-приложения, получить ее с помощью PHP и вставить в базу данных MySQL.

Ответы [ 3 ]

2 голосов
/ 28 января 2012

Да, я уверен, что ваш интернет-провайдер разрешает и "отправлять" и "получать" запросы HTTP-сервера.

Внешне и ваш Java, и PHP выглядят "хорошо".

СИЛЬНОЕ ПРЕДЛОЖЕНИЕ:

1) Проверьте свои журналы Apache на сервере.

Убедитесь, что запрос получен (возможно, так и есть).

Проверьте на наличие ошибок (дляваш запрос - но вы ДОЛЖНЫ видеть что-то в журнале ошибок Apache.

2) Убедитесь, что PHP работает.

Написание страницы "hello world" с помощью "phpinfo ();"хороший способ сделать это.

3) Убедитесь, что MySQL работает.

Написание страницы PHP "hello world" для проверки того, что вы можете 1) подключиться, 2) сделать запрос,и 3) идеально повторить запрос в вашем веб-браузере.

4) Убедитесь, что вы можете успешно прочитать значение "$ _POST [account]", которое, как вы думаете, вы получаете от клиента.

5) В этот момент вы сможете:

a) заставить клиента общаться с вашим сервером

b) прочитать почтовый запрос и записать его в вашу базу данных

'Надеюсь, что это поможет ... и, пожалуйста, отправляйте сообщения с любыми конкретными вопросами / проблемами, которые могут у вас возникнуть.

1 голос
/ 28 января 2012

Похоже, вы не устанавливаете метод запроса в HttpUrlConnection, и по умолчанию используется GET.Вам нужно что-то вроде

request.setRequestMethod("POST");

Если это не сработает, я бы предпочел использовать HTTP-клиент Apache с самого начала, его проще использовать, чем стандартный HTTP-клиент Java API.

1 голос
/ 28 января 2012

Вы не сообщили клиентскому коду, что это POST-запрос.Это, вероятно, будет делать GET по умолчанию.

url = new URL(targetURL);
connection = (HttpURLConnection)url.openConnection();
connection.setRequestMethod("POST");
...