2013-05-17 4 views
1

Использование MYSQL для моего приложения для Android:Android Java App - java.net.SocketException: Permission denied

MainActivity.

public class MainActivity extends Activity implements OnClickListener { 

Button login; 
EditText username, password; 
TextView status; 
HttpPost httppost; 
StringBuffer buffer; 
HttpResponse response; 
HttpClient httpclient; 
List<NameValuePair> nameValuePair; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    setup(); 
} 

private void setup() { 
    // TODO Auto-generated method stub 

    username = (EditText) findViewById(R.id.username); 
    password = (EditText) findViewById(R.id.password); 
    login = (Button) findViewById(R.id.login); 
    status = (TextView) findViewById(R.id.status); 
    login.setOnClickListener(this); 
} 

@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 void onClick(View v) { 
    // TODO Auto-generated method stub 

    switch(v.getId()) { 
    case R.id.login: 

     login(); 

     break; 
    } 
    } 

private void login() { 
    // TODO Auto-generated method stub 
    try { 
     httpclient= new DefaultHttpClient(); 
     httppost= new HttpPost("http://109.74.245.109/~profiled/android/index.php"); 
    // Adding Data: 
     nameValuePair = new ArrayList<NameValuePair>(1); 
    // Always use the same variable name for posting i.e the android side variable name and php side variable name should be similar, 
     nameValuePair.add(new BasicNameValuePair("username",username.getText().toString().trim())); 
     nameValuePair.add(new BasicNameValuePair("password",password.getText().toString().trim())); 
     httppost.setEntity(new UrlEncodedFormEntity(nameValuePair)); 
    // Execute HTTP Post Request 
     response = httpclient.execute(httppost); 



     ResponseHandler<String> responseHandler = new BasicResponseHandler(); 
     final String response = httpclient.execute(httppost, responseHandler); 
     status.setText(""+response); 
     if(response.equalsIgnoreCase("No user found")) { 

      startActivity(new Intent(MainActivity.this, UserPage.class)); 
     } 


     }catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
} 

Вот моя ошибка:

05-17 13:39:25.309: W/System.err(292): java.net.SocketException: Permission denied 
05-17 13:39:25.318: W/System.err(292): at org.apache.harmony.luni.platform.OSNetworkSystem.createStreamSocketImpl(Native Method) 
05-17 13:39:25.318: W/System.err(292): at org.apache.harmony.luni.platform.OSNetworkSystem.createStreamSocket(OSNetworkSystem.java:186) 
05-17 13:39:25.318: W/System.err(292): at org.apache.harmony.luni.net.PlainSocketImpl.create(PlainSocketImpl.java:265) 
05-17 13:39:25.318: W/System.err(292): at java.net.Socket.checkClosedAndCreate(Socket.java:873) 
05-17 13:39:25.318: W/System.err(292): at java.net.Socket.connect(Socket.java:1020) 
05-17 13:39:25.333: W/System.err(292): at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:119) 
05-17 13:39:25.337: W/System.err(292): at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:143) 
05-17 13:39:25.337: W/System.err(292): at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164) 
05-17 13:39:25.337: W/System.err(292): at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119) 
05-17 13:39:25.337: W/System.err(292): at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:348) 
05-17 13:39:25.337: W/System.err(292): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555) 
05-17 13:39:25.337: W/System.err(292): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487) 
05-17 13:39:25.337: W/System.err(292): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465) 
05-17 13:39:25.337: W/System.err(292): at com.profiledt.helloworld.MainActivity.login(MainActivity.java:88) 
05-17 13:39:25.337: W/System.err(292): at com.profiledt.helloworld.MainActivity.onClick(MainActivity.java:70) 
05-17 13:39:25.337: W/System.err(292): at android.view.View.performClick(View.java:2408) 
05-17 13:39:25.337: W/System.err(292): at android.view.View$PerformClick.run(View.java:8816) 
05-17 13:39:25.337: W/System.err(292): at android.os.Handler.handleCallback(Handler.java:587) 
05-17 13:39:25.337: W/System.err(292): at android.os.Handler.dispatchMessage(Handler.java:92) 
05-17 13:39:25.357: W/System.err(292): at android.os.Looper.loop(Looper.java:123) 
05-17 13:39:25.357: W/System.err(292): at android.app.ActivityThread.main(ActivityThread.java:4627) 
05-17 13:39:25.357: W/System.err(292): at java.lang.reflect.Method.invokeNative(Native Method) 
05-17 13:39:25.357: W/System.err(292): at java.lang.reflect.Method.invoke(Method.java:521) 
05-17 13:39:25.357: W/System.err(292): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
05-17 13:39:25.357: W/System.err(292): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
05-17 13:39:25.357: W/System.err(292): at dalvik.system.NativeStart.main(Native Method) 

Я не в полной мере понять ошибку, но с ним быть разрешения я пришел к нескольким выводам:

  • Он не может соединиться к базе данных mysql
  • Что-то связанное с IP-адресом и моим сервером?
+0

У вас есть разрешение INTERNET в файле манифеста? https://developer.android.com/reference/android/Manifest.permission.html – Mateusz

+0

Привет, Матеюш, я добавил то, что предложили люди ниже.Все еще не работает –

+0

Возможный дубликат [сообщение об ошибке] java.net.SocketException: socket failed: EACCES (Permission denied) '] (http://stackoverflow.com/questions/11273197/error-message-java-net-socketexception- socket-failed-eacces-permission-denie) – William

ответ

4

Добавьте это в свой манифест и проверьте.

<uses-permission android:name="android.permission.INTERNET"/> 
+0

Зачем получать доступ к сетевому состоянию? он запрашивает разрешение интернета, а не состояние сети, на то, что он поддерживает interet – DArkO

+0

Исправлено, спасибо! –

+0

Привет, я добавил это в Activity_main.xml, и приложение не запускается, и я получаю следующее: LOT ошибок: http://pastebin.com/xZSAtnj6 –

2
<uses-permission android:name="android.permission.ACCESS_INTERNET"/> 

Также я написал библиотеку, которая может помочь вам сделать это в другом потоке, в отличие от того, что вы делаете (запущенные запросы в потоке пользовательского интерфейса).

Возможно, вам понравится. если не есть и другие варианты там

https://github.com/darko1002001/android-rest-client

Надеется, что это помогает.

EDIT

Есть 2 компонента в игре обычно. вы напрямую не подключаетесь к базе данных, а скорее создаете скрипт PHP в своем случае, который будет подключаться к базе данных и действовать как WebService, который может принимать запросы и возвращать JSON, например. Приложение Android работает как клиент, который вызывает ваш веб-сервис PHP, который подключается к базе данных, считывает и возвращает результаты.

поэтому у вас есть:

клиента (Android) < -> Веб-сервис (PHP) < -> MySql базы данных

андроид не идет прямо в базу данных.

Простым тестом будет браузер ПК. если вы введете свой полный URL и нажмите enter в браузере, вы должны получить тот же самый точный ответ, что и на Android.

Это означает, что вы выполнили запрос GET к вашему веб-сервису, так как все действия, выполняемые в браузере.

В вашем случае кажется, что вы выполняете запрос POST.

Прочтите некоторые статьи об услугах REST для получения дополнительной информации о том, как это должно быть настроено.

Надеюсь, это поможет.

+0

Привет, DArkO, я все еще немного новичок во всем этом, это позволит мне подключиться к базе данных mysql и отобразить всю информацию? Спасибо –

+0

отредактировал мой ответ. – DArkO

+0

Эй, DArkO, вот что я делаю :) Спасибо –

Смежные вопросы