Bonjour, je développe une application Android et après un bon bout de temps passé sur la partie interface graphique je m'attaque à la partie communication avec le serveur. Pour cela je m’entraîne actuellement sur un tutoriel que j'avais un peu modifié mais j'avais eu des erreurs du coup j'ai réessayé et je pense que j'ai la même chose que dans le tuto au mot près. Problème les mêmes erreurs apparaissent dans le logcat!

Voilà le code PHP:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
<?php
	if (isset($_POST) && !empty($_POST)) {
 
		extract($_POST);
 
		$db = mysql_connect('localhost', 'root', 'root'); //chemin pour se co a la bdd
		mysql_select_db('gsctuto', $db);
		$sql = "insert INTO information (message) VALUES ('$message')";
		mysql_query($sql);
	} 
 
			?>
et le code Java:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
package com.lagwil.testandroidrestclient;
 
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
 
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.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v7.app.ActionBarActivity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
 
public class MainActivity extends ActionBarActivity {
 
	EditText edtMsg;
	Button btnEnvoyer;
	String resultat = null;
	InputStream is = null;
	StringBuilder sb = null;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        edtMsg = (EditText)findViewById(R.id.edtMsg);
        btnEnvoyer = (Button)findViewById(R.id.btnEnvoyer);
    }
 
    public void envoyerMessage(View v){
    	HttpClient client = new DefaultHttpClient();
    	HttpPost post = new HttpPost("http://adresse_ip/eclipse/PremierProjet/newfile.php"); //adresse IP du pc/fichier de sauvegarde/nom du projet php/nom du fichier
    	String msg = edtMsg.getText().toString();
    	if (msg.length() >0){
    		try{
    			List<NameValuePair> donnees = new ArrayList<NameValuePair>(1);
    			donnees.add(new BasicNameValuePair("message", msg));
    			post.setEntity(new UrlEncodedFormEntity(donnees));
    			client.execute(post);
    			edtMsg.setText("");
    			Toast.makeText(this, "Message envoyé", Toast.LENGTH_SHORT).show();
    		}
    		catch(ClientProtocolException e){
    			e.printStackTrace();
    		}
    		catch(IOException e){
    			e.printStackTrace();
    		}
    	}
    	else 
    		Toast.makeText(this, "Ce champs ne peut etre vide!", Toast.LENGTH_SHORT).show();
    }
 
    @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);
    }
 
    /**
     * A placeholder fragment containing a simple view.
     */
    public static class PlaceholderFragment extends Fragment {
 
        public PlaceholderFragment() {
        }
 
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.fragment_main, container, false);
            return rootView;
        }
    }
 
}
Bien sûr je n'ai pas oublié la permission dans le manifest.

Et dans le logcat j'ai ça:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
07-02 15:26:34.273: E/AndroidRuntime(11154): FATAL EXCEPTION: main
07-02 15:26:34.273: E/AndroidRuntime(11154): java.lang.IllegalStateException: Could not execute method of the activity
07-02 15:26:34.273: E/AndroidRuntime(11154): 	at android.view.View$1.onClick(View.java:3758)
07-02 15:26:34.273: E/AndroidRuntime(11154): 	at android.view.View.performClick(View.java:4377)
07-02 15:26:34.273: E/AndroidRuntime(11154): 	at android.view.View$PerformClick.run(View.java:18044)
07-02 15:26:34.273: E/AndroidRuntime(11154): 	at android.os.Handler.handleCallback(Handler.java:725)
07-02 15:26:34.273: E/AndroidRuntime(11154): 	at android.os.Handler.dispatchMessage(Handler.java:92)
07-02 15:26:34.273: E/AndroidRuntime(11154): 	at android.os.Looper.loop(Looper.java:137)
07-02 15:26:34.273: E/AndroidRuntime(11154): 	at android.app.ActivityThread.main(ActivityThread.java:5306)
07-02 15:26:34.273: E/AndroidRuntime(11154): 	at java.lang.reflect.Method.invokeNative(Native Method)
07-02 15:26:34.273: E/AndroidRuntime(11154): 	at java.lang.reflect.Method.invoke(Method.java:511)
07-02 15:26:34.273: E/AndroidRuntime(11154): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
07-02 15:26:34.273: E/AndroidRuntime(11154): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
07-02 15:26:34.273: E/AndroidRuntime(11154): 	at dalvik.system.NativeStart.main(Native Method)
07-02 15:26:34.273: E/AndroidRuntime(11154): Caused by: java.lang.reflect.InvocationTargetException
07-02 15:26:34.273: E/AndroidRuntime(11154): 	at java.lang.reflect.Method.invokeNative(Native Method)
07-02 15:26:34.273: E/AndroidRuntime(11154): 	at java.lang.reflect.Method.invoke(Method.java:511)
07-02 15:26:34.273: E/AndroidRuntime(11154): 	at android.view.View$1.onClick(View.java:3753)
07-02 15:26:34.273: E/AndroidRuntime(11154): 	... 11 more
07-02 15:26:34.273: E/AndroidRuntime(11154): Caused by: android.os.NetworkOnMainThreadException
07-02 15:26:34.273: E/AndroidRuntime(11154): 	at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1128)
07-02 15:26:34.273: E/AndroidRuntime(11154): 	at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:84)
07-02 15:26:34.273: E/AndroidRuntime(11154): 	at libcore.io.IoBridge.connectErrno(IoBridge.java:127)
07-02 15:26:34.273: E/AndroidRuntime(11154): 	at libcore.io.IoBridge.connect(IoBridge.java:112)
07-02 15:26:34.273: E/AndroidRuntime(11154): 	at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
07-02 15:26:34.273: E/AndroidRuntime(11154): 	at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:459)
07-02 15:26:34.273: E/AndroidRuntime(11154): 	at java.net.Socket.connect(Socket.java:842)
07-02 15:26:34.273: E/AndroidRuntime(11154): 	at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:119)
07-02 15:26:34.273: E/AndroidRuntime(11154): 	at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:144)
07-02 15:26:34.273: E/AndroidRuntime(11154): 	at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
07-02 15:26:34.273: E/AndroidRuntime(11154): 	at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
07-02 15:26:34.273: E/AndroidRuntime(11154): 	at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
07-02 15:26:34.273: E/AndroidRuntime(11154): 	at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
07-02 15:26:34.273: E/AndroidRuntime(11154): 	at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
07-02 15:26:34.273: E/AndroidRuntime(11154): 	at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
07-02 15:26:34.273: E/AndroidRuntime(11154): 	at com.lagwil.testandroidrestclient.MainActivity.envoyerMessage(MainActivity.java:54)
07-02 15:26:34.273: E/AndroidRuntime(11154): 	... 14 more
Les erreurs sont-elles liées à une différence de version d'API (10 pour le tuto, 19 pour la mienne) ?
Je ne suis pas certain non plus de la façon dont j'envoi des données dans le POST, dois-je mettre l'adresse IP de mon pc? et eclipse est-il bien le fichier par défaut où s'enregistre les projets?
Enfin que sont les erreurs:
java.lang.reflect.InvocationTargetException
android.os.NetworkOnMainThreadException ??
Après une petite recherche j'ai appris que la première apparaissait lorque une ressource particulière était nulle et pour la seconde j'ai vu que je devais peut être utiliser AsyncTask...

Voilà j'espère que c'est compréhensible et que quelqu'un pourra m'aider! Merci d'avance