# String an einen php Script senden



## GeorgA (3. Aug 2014)

Hallo,
ich werde mich sehr freuen, wenn Ihr mir erklärt, warum meine App nicht funktioniert.
Ziel:
ein String  an einen php Script senden.
Nach dem ich 4-es Tutorials ausprobiert habe, bin mit meinem Latein am ende!
Die 
<uses-permission android:name="android.permission.INTERNET"/>
habe ich im Manifest implementiert.

android:minSdkVersion="8"
android:targetSdkVersion="18" />   .... ursprünglich 19

Die Main:


```
public class DatatoPHP extends Activity {
....
button1.setOnClickListener(new OnClickListener() {
			
	public void onClick(View v)

	{
	...
	sendData();
});
...

 public void sendData() {

// Variante (Tutorial 1)
HttpClient client=new DefaultHttpClient();		
HttpPost getMethod=new HttpPost("http://www.xxxxxxxxxxxxxx.php");

client.execute(getMethod); <---- FEHLER
...
// Variante (Tutorial 2)
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://www.xxxxxxxxxxxxxx.php");

httpclient.execute(httppost); <---- FEHLER

...
// Variante (Tutorial 4)
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://www.xxxxxxxxxxxxxxxxxx.php");  

HttpResponse response = httpclient.execute(httppost);  <---- FEHLER
...
}
```

Wie gesagt, es sind 4 Tutorials die sehr ähnlichen Aufbau / Syntax haben, deshalb poste ich nicht alles.

Bitte um Hilfe.

Gruß
Georg


----------



## JavaMeister (3. Aug 2014)

Bitte google nach: "Wie man Fragen richtig stellt".

---

Leider fehlt die Fehlermeldung.


----------



## GeorgA (3. Aug 2014)

Hallo,
thiaaaa - *Entschuldigung!*
So verpeilt war ich aus der Verzweiflung.

Es "spuckt" mir eine:
NetworkOnMainThreadException 
bzw. 
problem parsing line: null

Hier die Methode:


```
public void sendData() 
				{
    				HttpClient client=new DefaultHttpClient();
    				
    				HttpPost getMethod=new HttpPost("http://www.XXXXXXXXXXXXXXXXXXXXXXX.php");
    				
    				try {
    				ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
    				
    				
    				
    				nameValuePairs.add(new BasicNameValuePair("test1","12345"));
    				nameValuePairs.add(new BasicNameValuePair("test2","54321"));
    				//try {
						getMethod.setEntity(new UrlEncodedFormEntity(nameValuePairs,HTTP.UTF_8));
						
						//client.execute(getMethod);
						
					} catch (UnsupportedEncodingException e) {
						// TODO Auto-generated catch block
						System.out.println("MY--UnsupportedEncodingException");
						e.printStackTrace();
					}
    				
    				try {
						client.execute(getMethod);
						
						//System.out.println(client.execute(getMethod));
								
								
					} catch (ClientProtocolException e) {
						// TODO Auto-generated catch block
						System.out.println("MY--ClientProtocolException");
						e.printStackTrace();
					} catch (IOException e) {
						// TODO Auto-generated catch block
						System.out.println("MY--IOException");
						e.printStackTrace();
					}
				}
```

Debug / LogCat:

Debug	
					Thread [<1> main] (Suspended (exception NetworkOnMainThreadException))	
	<VM does not provide monitor information>	
	DefaultRequestDirector.execute(HttpHost, HttpRequest, HttpContext) line: 531	
	DefaultHttpClient(AbstractHttpClient).execute(HttpHost, HttpRequest, HttpContext) line: 555	
	DefaultHttpClient(AbstractHttpClient).execute(HttpUriRequest, HttpContext) line: 487	
	DefaultHttpClient(AbstractHttpClient).execute(HttpUriRequest) line: 465	
	DatatoPHP.sendData() line: 112	
	DatatoPHP$1.onClick(View) line: 78	
	Button(View).performClick() line: 3480	
	View$PerformClick.run() line: 13983	
	ViewRootImpl(Handler).handleCallback(Message) line: 605	
	ViewRootImpl(Handler).dispatchMessage(Message) line: 92	
	Looper.loop() line: 137	
	ActivityThread.main(String[]) line: 4340	
	Method.invokeNative(Object, Object[], Class, Class[], Class, int, boolean) line: not available [native method]	
	Method.invoke(Object, Object...) line: 511	
	ZygoteInit$MethodAndArgsCaller.run() line: 784	
	ZygoteInit.main(String[]) line: 551	
	NativeStart.main(String[]) line: not available [native method]	

	LogCat

		08-03 14:41:07.170: A/NetworkStats(91): problem reading network stats
08-03 14:41:07.170: A/NetworkStats(91): java.lang.IllegalStateException: problem parsing line: null
08-03 14:41:07.170: A/NetworkStats(91): 	at com.android.internal.net.NetworkStatsFactory.readNetworkStatsDetail(NetworkStatsFactory.java:313)
08-03 14:41:07.170: A/NetworkStats(91): 	at com.android.server.NetworkManagementService.getNetworkStatsUidDetail(NetworkManagementService.java:1271)
08-03 14:41:07.170: A/NetworkStats(91): 	at com.android.server.net.NetworkStatsService.performPollLocked(NetworkStatsService.java:810)
08-03 14:41:07.170: A/NetworkStats(91): 	at com.android.server.net.NetworkStatsService.updateIfacesLocked(NetworkStatsService.java:721)
08-03 14:41:07.170: A/NetworkStats(91): 	at com.android.server.net.NetworkStatsService.updateIfaces(NetworkStatsService.java:699)
08-03 14:41:07.170: A/NetworkStats(91): 	at com.android.server.net.NetworkStatsService.access$000(NetworkStatsService.java:128)
08-03 14:41:07.170: A/NetworkStats(91): 	at com.android.server.net.NetworkStatsService$1.onReceive(NetworkStatsService.java:589)
08-03 14:41:07.170: A/NetworkStats(91): 	at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:728)
08-03 14:41:07.170: A/NetworkStats(91): 	at android.os.Handler.handleCallback(Handler.java:605)
08-03 14:41:07.170: A/NetworkStats(91): 	at android.os.Handler.dispatchMessage(Handler.java:92)
08-03 14:41:07.170: A/NetworkStats(91): 	at android.os.Looper.loop(Looper.java:137)
08-03 14:41:07.170: A/NetworkStats(91): 	at android.os.HandlerThread.run(HandlerThread.java:60)
08-03 14:41:07.170: A/NetworkStats(91): Caused by: java.io.FileNotFoundException: /proc/net/xt_qtaguid/stats: open failed: ENOENT (No such file or directory)
08-03 14:41:07.170: A/NetworkStats(91): 	at libcore.io.IoBridge.open(IoBridge.java:406)
08-03 14:41:07.170: A/NetworkStats(91): 	at java.io.FileInputStream.<init>(FileInputStream.java:78)
08-03 14:41:07.170: A/NetworkStats(91): 	at java.io.FileReader.<init>(FileReader.java:42)
08-03 14:41:07.170: A/NetworkStats(91): 	at com.android.internal.net.NetworkStatsFactory.readNetworkStatsDetail(NetworkStatsFactory.java:272)
08-03 14:41:07.170: A/NetworkStats(91): 	... 11 more
08-03 14:41:07.170: A/NetworkStats(91): Caused by: libcore.io.ErrnoException: open failed: ENOENT (No such file or directory)
08-03 14:41:07.170: A/NetworkStats(91): 	at libcore.io.Posix.open(Native Method)
08-03 14:41:07.170: A/NetworkStats(91): 	at libcore.io.BlockGuardOs.open(BlockGuardOs.java:98)
08-03 14:41:07.170: A/NetworkStats(91): 	at libcore.io.IoBridge.open(IoBridge.java:390)
08-03 14:41:07.170: A/NetworkStats(91): 	... 14 more


at java.io.FileInputStream.<init>(FileInputStream.java:78) ======>  sendData();
DatatoPHP.sendData() line: 112	 =========>  client.execute(getMethod);

Weil ich dachte, das AVD (Emulator) nicht ins netzt kann, habe es auf das Handy übertragen, dort stürzt das App aber ebenso ab.  

Das gleiche passiert bei  versuchen mit anderen Tutorials ebenso. (_Aber erstmal eine!!! Variante_)
Ich weis nicht weiter. 

Grüße
Georg


----------



## GeorgA (3. Aug 2014)

Hallo,
*sorry für den Doppel- posting*, habe aber was geändert.
Die Netzverbindung habe ich in einen neues Thread "gepackt". (Google sagt mach es so :rtfm

Nun jetzt bekomme ich eine IOException
es wird "gemeckert", dass meine Adresse nicht stimmt:
_08-03 18:27:47.359: WARN/System.err(1054): java.net.UnknownHostException: Unable to resolve host "www.xxxxxx.de": No address associated with hostname_
Wobei ich bei anderen Apps die selber Adresse benutzte und es alles funktioniert.

Ich drehe durch!?!?!?!?
Sollte jemand einen Rat wissen, werde sehr dankbar dafür.

Hier Code:

```
button1.setOnClickListener(new OnClickListener() {
    		public void onClick(View v)
    		{
...

Thread thread = new Thread(new Runnable(){
    	            @Override
    	            public void run() {
    	                try {
    	                	
    	                   	// SendData
    	                	sendData();
    	                	
    	                } catch (Exception e) {
    	                    e.printStackTrace();
    	                }
    	            }
    	        });

    	        thread.start(); 

..
 });
...
```


Gruß
Georg


----------



## Dagobert (4. Aug 2014)

Das mit der NetworkOnMainStack hast ja schon erkannt =) Trotzdem verbesser ich dich auch hier nochmal 
Nimm kein Thread dafür... sondern nen AsyncTask 

wie wäre es mit http:// in deiner URL?

lg. Dagobert


----------



## GeorgA (6. Aug 2014)

Hallo,


> ... Trotzdem verbesser ich dich auch hier nochmal ...


Ich würde mir wünschen: - von Deinen Verbesserungen  NIE! "genug zu bekommen" :toll:
Danke!
Was http:// in meiner URL betrifft, war schon ok. (Full Unix path)
Warum die Eclipse so spinnt - keine Ahnung.
Nach einem Clear / Refresh .... war die Meldung (ohne was im Code zu ändern!) weg.

Als ich die "Network Seite" in den AsyncTask "reinquetschen" wollte, bin auf "Sachen" gestoßen, welche mir unbekannt sind. (Habe mit Java 1.1 angefangen .... bei 5.0 war Schluss.) 
So was:
class SendtoPHPTask extends AsyncTask<String, Void, String> 
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
protected String doInBackground(String... params) {

also exakt:
<String, Void, String>
ArrayList<NameValuePair>(2)
(String... params)

sind für mich ein Novum. (Da muss ich mein Java unbedingt erfrischen!)

Habe gedacht - ok - bediene sich wieder am einen Tut mit AsyncTask.

Das Tut "spukt" mir die IOException!

Irgendwo verliere ich den Blick - *nun WO?*


Fullcode (eigentlich bin gegen  / mag ich selber nicht so  ... ) - kaum jemand macht sich die Mühe es zu analysieren ... 

Na ja - ich versuche es hier mit den Fullcode.


```
import java.io.IOException;
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.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ProgressBar;
import android.widget.Toast;


public class DataToPHP2 extends Activity implements OnClickListener {
	
	private EditText value;
	private Button btn;
	private ProgressBar pb;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_data_to_php2);
        
    	value=(EditText)findViewById(R.id.editText1);
    	btn=(Button)findViewById(R.id.button1);
    	pb=(ProgressBar)findViewById(R.id.progressBar1);
    	pb.setVisibility(View.GONE);
    	btn.setOnClickListener(this);
    }

	public void onClick(View v) {
		// TODO Auto-generated method stub
		if(value.getText().toString().length()<1){
		// out of range
		Toast.makeText(this, "please enter something", Toast.LENGTH_LONG).show();
		}else{
		pb.setVisibility(View.VISIBLE);
		new MyAsyncTask().execute(value.getText().toString());	
		} 
	} 
	
	private class MyAsyncTask extends AsyncTask<String, Integer, Double>{
		 
		@Override
		protected Double doInBackground(String... params) {
				// TODO Auto-generated method stub
				postData(params[0]);
				return null;
				}
 
		protected void onPostExecute(Double result){
			pb.setVisibility(View.GONE);
			Toast.makeText(getApplicationContext(), "command sent", Toast.LENGTH_LONG).show();
				}
		
		protected void onProgressUpdate(Integer... progress){
			pb.setProgress(progress[0]);
				}
 
		public void postData(String valueIWantToSend) {
				// Create a new HttpClient and Post Header
				HttpClient httpclient = new DefaultHttpClient();
				HttpPost httppost = new HttpPost("http://www.xxxxxxxxxxxxxxxxx.php");
 
				try {
					// Add your data
					List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
					nameValuePairs.add(new BasicNameValuePair("data", valueIWantToSend));
					httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
 
					// Execute HTTP Post Request
					HttpResponse response = httpclient.execute(httppost);
 
					} catch (ClientProtocolException e) {
						// TODO Auto-generated catch block
						System.out.println("MY--ClientProtocolException");
					} catch (IOException e) {
						// TODO Auto-generated catch block
						System.out.println("MY--IOException");
					}
				}
		}
}
```


Für einen (mehrere) Tipp werde ich mich sehr freuen.
Ansonsten, es ist mir bewusst, dass nur Teilprobleme gerne beantwortet werden ...

Irgendwo verliere ich den Blick - nun WO?

Gruß
Georg


----------



## Dagobert (7. Aug 2014)

zzzzZZZZZZZZZZzzzzzzzz

Logcat?


----------



## GeorgA (7. Aug 2014)

*Uppppps - sorry,* 
es gab KEINE! Fehler im LogCat - außer! meine 
System.out.println("MY--IOException");

...
} catch (IOException e) {
	// TODO Auto-generated catch block
	System.out.println("MY--IOException");
	}
...

Aber naher konnte ich sogar mit System.out schon gar nichts in der IDE ausgeben!
Die Eclipse "spinnte" - aber jetzt ist alles ok. Keine Fehlermeldungen.
NUN!!! mein php Script reagiert nicht.


```
...
nameValuePairs.add(new BasicNameValuePair("data", valueIWantToSend));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
...
```


```
<?php
$data = $_POST['data'];
echo $data;
?>
```

Also scheint nichts zu senden???
"Komisch ist", dass ich schon 5 Tutorials ausprobiert habe, und keins
beeinfluss mir meine php Scripte.

Bin "am Ende" - kein Plan - was ich noch machen soll ....

LG
Georg


----------



## GeorgA (8. Aug 2014)

*SORRY für den DoppelPosting*

Nach einem ID Clear, F5, Clear .... sendet das Code, und alles funktioniert.
Sorry - es lag irgendwo an der Eclipse ???

Gruß
Georg


----------

