O
Odins Auge
Neues Mitglied
- 0
Hallo
Ich möchte Daten an eine Webdatenbank (mysql + apache) sicken und sie von dort abrufen.
Als Ansatz habe ich die Rest Webservice Tutorials hergenommen und die mit AsyncTask erweitert.
Mein Problem ist, ich bekomme beim Verbindungsaufbau eine ClientProtocolException mit der Meldung: The server failed to respond with a valid http response.
Ich habe verschiedene Tutorials ausprobiert aber an der Fehlermeldung hat sich nichts geändert, ich habe auch zu dieser Fehlermeldung nichts brauchbares finden können, hat jemand eine Ahnung wo der Fehler liegt?
Der Server ist eine lokale Linux-Maschine, mein Nexus S befindet sich ebenfalls per WLAN im lokalen Netz und das PHP script lässt sich im Browser problemlos öffnen.
Hier der Code:
Activity
Thread:
PHP Script:
Ich möchte Daten an eine Webdatenbank (mysql + apache) sicken und sie von dort abrufen.
Als Ansatz habe ich die Rest Webservice Tutorials hergenommen und die mit AsyncTask erweitert.
Mein Problem ist, ich bekomme beim Verbindungsaufbau eine ClientProtocolException mit der Meldung: The server failed to respond with a valid http response.
Ich habe verschiedene Tutorials ausprobiert aber an der Fehlermeldung hat sich nichts geändert, ich habe auch zu dieser Fehlermeldung nichts brauchbares finden können, hat jemand eine Ahnung wo der Fehler liegt?
Der Server ist eine lokale Linux-Maschine, mein Nexus S befindet sich ebenfalls per WLAN im lokalen Netz und das PHP script lässt sich im Browser problemlos öffnen.
Hier der Code:
Activity
Code:
package at.vikingstudios.androidtest;
import java.util.ArrayList;
import java.util.concurrent.ExecutionException;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.ListActivity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.widget.ArrayAdapter;
public class AndroidTestActivity extends ListActivity
{
ArrayList<String> results = new ArrayList<String>();
JSONObject json_data;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getData();
}
private void getData() {
String url;
String result = "";
AsyncTask<String, Void, String> ds;
try {
url = "http://192.168.1.102:3306" + System.getProperty("file.separator") + "androidtest.php";
ds = new DataSucker().execute(url);
result = ds.get();
} catch (InterruptedException ie)
{
Log.e("log_tag", "Error thread interrupted: "+ie.toString());
} catch (ExecutionException ee)
{
Log.e("log_tag", "Error on execution: "+ee.toString());
}
try
{
JSONArray jArray = new JSONArray(result);
for(int i=0;i<jArray.length();i++)
{
json_data = jArray.getJSONObject(i);
results.add((String) json_data.get("id") + " "+ json_data.get("name"));
Log.d("debug", (String) json_data.get("id") + " "+ json_data.get("name"));
}
fillList();
} catch(JSONException e)
{
Log.e("log_tag", "Error parsing data "+e.toString());
}
}
public void fillList()
{
this.setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, results));
}
}
Thread:
Code:
package at.vikingstudios.androidtest;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import android.os.AsyncTask;
import android.util.Log;
public class DataSucker extends AsyncTask<String, Void, String>
{
InputStream is;
@Override
protected String doInBackground(String... urls) {
String result = "";
//ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
try
{
HttpClient httpclient = new DefaultHttpClient();
HttpGet httpget = new HttpGet("http://192.168.1.102:3306" + System.getProperty("file.separator") + "androidtest.php");
//httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
httpget.setHeader("Accept", "application/json");
httpget.setHeader("Content-type", "application/json");
HttpResponse response = httpclient.execute(httpget);
Log.e("log_tag", response.getStatusLine().toString());
HttpEntity entity = response.getEntity();
is = entity.getContent();
} catch (ClientProtocolException ce)
{
Log.e("log_tag", "Fehler bei der http Verbindung "+ce.toString()+ ce.getCause());
} catch(Exception e)
{
Log.e("log_tag", "Fehler bei der http Verbindung "+e.toString());
}
try
{
BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null)
{
sb.append(line + "n");
}
is.close();
result=sb.toString();
} catch(Exception e)
{
Log.e("log_tag", "Error converting result "+e.toString());
}
return result;
}
}
PHP Script:
Code:
<?php
mysql_connect("localhost","android","and123");
mysql_select_db("androidtest");
$q=mysql_query("SELECT * FROM androidtest");
while($e=mysql_fetch_assoc($q))
$output[]=$e;
print(json_encode($output));
mysql_close();
?>