2014-10-24 3 views
0

Android java (Eclipse):Java Android App, отправлять и получать переменные?

Я новичок в программировании приложений для Android.

Я пытаюсь создать тестовое приложение, которое отправляет значения в php-скрипт на моем сервере wampserver, а затем обратно в мое приложение Android для отображения. Похоже, что он отправляет переменные скрипту, но не возвращается для отображения.

Как отправить значения для отображения?

PHP скрипт:

<?php 

$filename="datatest.html"; 
file_put_contents($filename,$_POST["id"]."<br />",FILE_APPEND); 
file_put_contents($filename,$_POST["stringdata"]."<br />",FILE_APPEND); 
$msg=file_get_contents($filename); 
echo $msg; 

?> 

Android MainActivity.java:

package com.example.phptest; 

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.util.ArrayList; 
import java.util.List; 

import org.apache.http.HttpResponse; 
import org.apache.http.NameValuePair; 
import org.apache.http.client.ClientProtocolException; 
import org.apache.http.client.HttpClient; 
import org.apache.http.client.entity.UrlEncodedFormEntity; 
import org.apache.http.client.methods.HttpPost; 
import org.apache.http.impl.client.DefaultHttpClient; 
import org.apache.http.message.BasicNameValuePair; 

import android.support.v7.app.ActionBarActivity; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuItem; 


public class MainActivity extends ActionBarActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

    } 

    public void postData() { 
     // Create a new HttpClient and Post Header 
     HttpClient httpclient = new DefaultHttpClient(); 
     HttpPost httppost = new HttpPost("http://192.168.1.41:8383/android_butler/mypage.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 
     } 
    } 





    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 
     if (id == R.id.action_settings) { 
      return true; 
     } 
     return super.onOptionsItemSelected(item); 
    } 
} 
+0

для возвращения какого-либо результата, вы должны форматировать данные (результат) в каком-то формате, например, JSON, XML и т.д. nd прочитать результат из кода Android с помощью анализа XML/Json. –

ответ

0

Вы находитесь на правильном пути для отправки данных на сервер вы можете использовать POST переменные.

Если она становится более сложной, например, посылая массив, то вам нужно

Для отправки обратно вы закодировать PHP массив в данных JSON, то ваше приложение будет иметь возможность разобрать строку JSON в объекты Java.

Некоторые полезные указатели:

Читайте о JSON:

Некоторые библиотеки JSON:

PHP

Вы можете сделать то же самое с XML, но JSON гораздо проще.

ANDROID:

Еще одна вещь, я не видел, как вы называете эту функцию, но андроид вам нужно будет сделать это в фоновом потоке, посмотрите на асинхронной задачи:

Надеется, что это помогает

+0

Большое спасибо! Я сделаю некоторое чтение – user3888775

+0

@ user3888775 Я добавил еще одну ссылку для задачи async, пожалуйста, взгляните – meda

Смежные вопросы