saludos compañeros estoy intentando hacer un sistema de login desde un dispositivo a mi foro php , el caso es que via navegador la url que paso funciona bien pero desde android me tira errores , este es el código:
Código:
public class MainActivity extends Activity {
TextView tx;
EditText user, pass;
Button but;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tx = (TextView) findViewById(R.id.textView1);
user = (EditText) findViewById(R.id.editText1);
pass = (EditText) findViewById(R.id.editText2);
but = (Button) findViewById(R.id.button1);
but.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
connect();
}
});
}
public void connect() {
try {
String us = URLEncoder.encode(user.getText().toString(), "UTF-8");
String passw = URLEncoder
.encode(pass.getText().toString(), "UTF-8");
String url = String
.format("http://www.mipaginaweb.com/login.php?username=%s&password=%s",
us, passw);
postLoginData();
} catch (UnsupportedEncodingException ex) {
ex.printStackTrace();
}
}
public void postLoginData() {
// Create a new HttpClient and Post Header
HttpClient httpclient = new DefaultHttpClient();
/* login.php returns true if username and password is equal to saranga */
HttpPost httppost = new HttpPost(
"http://www.amsspecialist.com/login.php");
try {
// Add user name and password
String username = user.getText().toString();
String password = pass.getText().toString();
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
nameValuePairs.add(new BasicNameValuePair("username", username));
nameValuePairs.add(new BasicNameValuePair("password", password));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
// Execute HTTP Post Request
Log.w("SENCIDE", "Execute HTTP Post Request");
HttpResponse response = httpclient.execute(httppost);
String str = convertInputStreamToString(
response.getEntity().getContent()).toString();
Log.w("SENCIDE", str);
tx.setText(str.toString());
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
private static String convertInputStreamToString(InputStream inputStream)
throws IOException {
BufferedReader bufferedReader = new BufferedReader(
new InputStreamReader(inputStream));
String line = "";
String result = "";
while ((line = bufferedReader.readLine()) != null)
result += line;
inputStream.close();
return result;
}
}
y este el logcat con el error
Código:
08-04 16:39:27.730: D/memalloc(15364): /dev/pmem: Mapped buffer base:0x51727000 size:2580480 offset:1966080 fd:46
08-04 16:39:28.400: D/memalloc(15364): /dev/pmem: Mapped buffer base:0x51b4d000 size:3194880 offset:2580480 fd:49
08-04 16:39:28.520: D/memalloc(15364): /dev/pmem: Mapped buffer base:0x51fd9000 size:1474560 offset:860160 fd:52
08-04 16:39:30.120: W/SENCIDE(15364): Execute HTTP Post Request
08-04 16:39:30.180: W/dalvikvm(15364): threadid=1: thread exiting with uncaught exception (group=0x40da51f8)
08-04 16:39:30.200: E/AndroidRuntime(15364): FATAL EXCEPTION: main
08-04 16:39:30.200: E/AndroidRuntime(15364): android.os.NetworkOnMainThreadException
08-04 16:39:30.200: E/AndroidRuntime(15364): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1099)
08-04 16:39:30.200: E/AndroidRuntime(15364): at java.net.InetAddress.lookupHostByName(InetAddress.java:426)
08-04 16:39:30.200: E/AndroidRuntime(15364): at java.net.InetAddress.getAllByNameImpl(InetAddress.java:277)
08-04 16:39:30.200: E/AndroidRuntime(15364): at java.net.InetAddress.getAllByName(InetAddress.java:251)
08-04 16:39:30.200: E/AndroidRuntime(15364): at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:137)
08-04 16:39:30.200: E/AndroidRuntime(15364): at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
08-04 16:39:30.200: E/AndroidRuntime(15364): at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
08-04 16:39:30.200: E/AndroidRuntime(15364): at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
08-04 16:39:30.200: E/AndroidRuntime(15364): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
08-04 16:39:30.200: E/AndroidRuntime(15364): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
08-04 16:39:30.200: E/AndroidRuntime(15364): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
08-04 16:39:30.200: E/AndroidRuntime(15364): at com.example.login_prueva.MainActivity.postLoginData(MainActivity.java:94)
08-04 16:39:30.200: E/AndroidRuntime(15364): at com.example.login_prueva.MainActivity.connect(MainActivity.java:64)
08-04 16:39:30.200: E/AndroidRuntime(15364): at com.example.login_prueva.MainActivity$1.onClick(MainActivity.java:47)
08-04 16:39:30.200: E/AndroidRuntime(15364): at android.view.View.performClick(View.java:3524)
08-04 16:39:30.200: E/AndroidRuntime(15364): at android.view.View$PerformClick.run(View.java:14194)
08-04 16:39:30.200: E/AndroidRuntime(15364): at android.os.Handler.handleCallback(Handler.java:605)
08-04 16:39:30.200: E/AndroidRuntime(15364): at android.os.Handler.dispatchMessage(Handler.java:92)
08-04 16:39:30.200: E/AndroidRuntime(15364): at android.os.Looper.loop(Looper.java:137)
08-04 16:39:30.200: E/AndroidRuntime(15364): at android.app.ActivityThread.main(ActivityThread.java:4476)
08-04 16:39:30.200: E/AndroidRuntime(15364): at java.lang.reflect.Method.invokeNative(Native Method)
08-04 16:39:30.200: E/AndroidRuntime(15364): at java.lang.reflect.Method.invoke(Method.java:511)
08-04 16:39:30.200: E/AndroidRuntime(15364): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:816)
08-04 16:39:30.200: E/AndroidRuntime(15364): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:583)
08-04 16:39:30.200: E/AndroidRuntime(15364): at dalvik.system.NativeStart.main(Native Method)
no se que estoy haciendo mal , los permisos de internet en el manifest ya estan.