2013-11-28 6 views
2

Я хочу сделать HTTP-сообщение от Android до серверного сервера, на котором будет запущен PHP-скрипт для получения этих данных и сохранения содержимого в текстовый файл.HTTP-сообщение от Android до PHP backend

для Android HTTP Post, я следующий пример, который можно найти на http://www.androidsnippets.com/executing-a-http-post-request-with-httpclient

Но я не мог найти каких-либо ссылок на бэкенд PHP части. Самый близкий метод загрузки PHP http://www.php.net/manual/en/features.file-upload.post-method.php, но он предназначен для загрузки файлов.

Существует старое сообщение в SO Get Data Sent by HttpPost in Java to php Script, но ответов пока нет.

Любая идея, как я мог бы реализовать это? В основном я хочу получать опубликованные данные с Android и сохранять их в текстовом файле.

Заранее спасибо

+0

Вы уверены, что запрос будет отправлен? Не могли бы вы вставить код, чтобы взглянуть на ваш подход? – Cheluis

+0

- услуга ур на локальном хосте или удаленном компьютере? – KOTIOS

+0

@Monica Я пытаюсь на локальном хосте – aandroidtest

ответ

2

Прежде всего убедитесь, что ваш сценарий. php получает запрос или нет.

Тестирование на Emulator: локального сервера относится к устройству, на котором код работает, если его об эмуляторе тогда you'l придется использовать IP address 10.0.2.2.

Тестирование на устройстве: Если вы тестируете приложение на своем физическом устройстве, вам необходимо включить USB-модем, а затем проверить IP-адрес, связанный между вашим устройством и ПК. (Не имеет значения, если Mobile Data включен или выключен)

В Linux, вы можете проверить, что IP-адрес с помощью sudo ipconfig

Это будет о/р все сетевые интерфейсы, от тех, you'l должны найдите тот, у которого usn0 или что-то подобное.

usb0 Link encap:Ethernet HWaddr 06:94:c7:0d:51:43 
     inet addr:192.168.42.106 Bcast:192.168.42.255 Mask:255.255.255.0 
     inet6 addr: fe80::494:c7ff:fe0d:5143/64 Scope:Link 
     UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 
     RX packets:21 errors:0 dropped:0 overruns:0 frame:0 
     TX packets:29 errors:0 dropped:0 overruns:0 carrier:0 
     collisions:0 txqueuelen:1000 
     RX bytes:2016 (1.9 KiB) TX bytes:3978 (3.8 KiB) 

Здесь вы можете увидеть IP устройства 192.168.42.106 так, В Android вы должны использовать URL, как,

http://192.168.42.106/script.php 

В, окна имеет аналогичную команду ipconfig.

Android Источник

public void postData() { 
    // Create a new HttpClient and Post Header 
    HttpClient httpclient = new DefaultHttpClient(); 
    HttpPost httppost = new HttpPost("http://192.168.42.106/script.php"); // <-- for Device, and for emulator--> http://10.0.2.2/script.php 

    try { 
     // Add your data 
     List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2); 
     nameValuePairs.add(new BasicNameValuePair("id", "12345")); 
     nameValuePairs.add(new BasicNameValuePair("stringdata", "AndDev is Cool!")); 
     httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

     // Execute HTTP Post Request 
     HttpResponse response = httpclient.execute(httppost); 

    } catch (ClientProtocolException e) { 
     // TODO Auto-generated catch block 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
    } 
} 

После Наладка правильный IP в Android код, аргументы для чтения POST в script.php и создать новый файл для хранения этих данных:

<?php 
//getting data from POST request. 
$arg1= $POST['id']; 
$arg2= $POST['stringdata']; 

//creating file 
$ourFileName = "testFile.txt"; 
$ourFileHandle = fopen($ourFileName, 'w') or die("can't create file"); 

//wrinting content to file 
fwrite($ourFileHandle, $arg1); 
fwrite($ourFileHandle, $arg2); 

//closing file 
fclose($ourFileHandle); 

?> 

Надежда это было быть полезным. :)

0

Вот Doc

you should refer localhost as : 10.0.2.2 

In your case u should change to 10.0.2.2/scipt.php 
Смежные вопросы