HTTP Post classes werken niet [Android]

Status
Niet open voor verdere reacties.

michaelbeersnl

Gebruiker
Lid geworden
30 nov 2011
Berichten
57
Beste helpers,

Ik moet voor school een Android applicatie maken.
Tot nu toe gaat dit allemaal goed en zijn we inmiddels beland bij de database.

Omdat de JDBC library voor telefoons te zwaar is werd er op meerdere fora geadviseerd om te werken met een PHP API en de HTTP classes in java.
Nu heb ik de volgende code geschreven maar ik krijg continue exceptions terwijl naar mijn idee de code gewoon goed is...

Code:
package com.kleinrome;

import java.util.ArrayList;

import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;

import com.kleinrome.util.PostHttp;

import android.os.Bundle;
import android.util.Log;
import android.app.Activity;

public class Main extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		//Test
		PostHttp post = new PostHttp();
		ArrayList<NameValuePair> params = new ArrayList<NameValuePair>();
		params.add(new BasicNameValuePair("username","abcd")); 
		
		post.connect(params, "http://192.168.0.189/kleinrome/index.php");
		
		Log.e("test", post.result);
	}

}

Code:
package com.kleinrome.util;

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

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
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.json.JSONArray;
import org.json.JSONException;

import android.util.Log;

public class PostHttp {
	
	public InputStream is = null;
	public String result = "";
	
	// --------------------------------------------------
	
	/**
	 * Create a new HTTP post request and response a json array.
	 * 
	 * @param params
	 * @param url
	 * @return
	 */
	public JSONArray jsonConnect(ArrayList<NameValuePair> params, String url) {
		//Make a connection.
		connect(params, url);
		
		return null;
	}
	
	// --------------------------------------------------
	
	/**
	 * Create a new HTTP post Request.
	 * 
	 * @param params
	 * @param url
	 */
	public void connect(ArrayList<NameValuePair> params, String url)
	{
		try {
			//Setup the client.
			HttpClient httpclient = new DefaultHttpClient();
			HttpPost httppost = new HttpPost(url);
			
			httppost.setEntity(new UrlEncodedFormEntity(params));
			
			//Do the request and get the response.
			HttpResponse response = httpclient.execute(httppost);
			HttpEntity entity = response.getEntity();
			
			//Save data
			is = entity.getContent();
		}
		catch (Exception e) {
			Log.e("log_tag", "Error in http connection: " + e.toString());
		}
	}
	
	/**
	 * Get the HTTP post response.
	 */
	public void getPostResponse()
	{
		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();
			Log.e("getpostresponse", "Post result: " + sb.toString());
		}
		catch (Exception e) {
			Log.e("log_tag", "Error converting result: " + e.toString());
		}
	}
	
	/**
	 * Return the result as Json array.
	 * 
	 * @return
	 */
	public JSONArray getJsonArray()
	{
		try {
			JSONArray jArray = new JSONArray(result);
			return jArray;
		}
		catch (JSONException e)
		{
			Log.e("log_tag", "Error parsing data: " + e.toString());
			return null;
		}
	}
}

Alvast bedankt,

Michael

Edit: Imiddels gelukt, vergeten StrictMode aan te zetten anders werkt het niet in Android 4.0+
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan