2012-10-26 114 views
0

我嘗試開發使用Web服務的簡單應用程序。我有登錄屏幕和數據庫在MySQL中。 但當我運行代碼它會引發套接字異常。我出錯的地方。我也想知道如何將數據導入來自Web服務的變量。Android網絡服務套接字例外

這裏是我的manifeast文件

<uses-sdk 
    android:minSdkVersion="8" 
    android:targetSdkVersion="15" /> 
<uses-permission android:name="android.permission.INTERNET"/> 

和我的活動文件

package com.example.webserviceapplication; 

import java.io.IOException; 

import org.apache.http.HttpEntity; 
import org.apache.http.HttpResponse; 
import org.apache.http.client.HttpClient; 
import org.apache.http.client.methods.HttpPost; 
import org.apache.http.impl.client.DefaultHttpClient; 
import org.apache.http.util.EntityUtils; 

import android.net.ConnectivityManager; 
import android.net.NetworkInfo; 
import android.os.Bundle; 
import android.app.Activity; 
import android.content.Context; 
import android.util.Log; 
import android.view.Menu; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 

public class MainActivity extends Activity implements OnClickListener 
{ 

EditText username,password; 
Button login,cancel; 
TextView msg; 

@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    username=(EditText)findViewById(R.id.username); 
    password=(EditText)findViewById(R.id.password); 

    login=(Button)findViewById(R.id.login); 
    cancel=(Button)findViewById(R.id.cancel); 

    msg=(TextView)findViewById(R.id.msg); 

    login.setOnClickListener(new OnClickListener() 
    { 

     @Override 
     public void onClick(View v) 
     { 
      try 
      { 
       HttpClient client = new DefaultHttpClient(); 
       String postURL = "http://gladiolus/TestPhp/android.php"; 
       HttpPost post = new HttpPost(postURL); 
       HttpResponse responsePOST = client.execute(post); 
       HttpEntity resEntity = responsePOST.getEntity(); 
       String response=EntityUtils.toString(resEntity); 
       response=response.trim(); 
       msg.setText(response); 
       Log.i("RESPONSE=",response); 
      } 
      catch (Exception e) 
      { 
       e.printStackTrace(); 
      } 

     } 
    }); 

} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) 
{ 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 

@Override 
public void onClick(View v) { 
    // TODO Auto-generated method stub 

} 



} 

和我的PHP文件

<?php 
$con = mysql_connect("localhost","",""); 
if (!$con) 
    { 
    die('Could not connect: ' . mysql_error()); 
    } 

mysql_select_db("android_test_db", $con); 

$result = mysql_query("SELECT * FROM login"); 

while($row = mysql_fetch_array($result)) 
    { 
    echo $row['username'] . " " . $row['password']; 
    echo "<br />"; 
    } 

print_r($row); 

mysql_close($con); 
?> 

和路徑PHP是劍蘭/ TestPhp/android.php

回答

0

有一件事你的網址是不正確的。爲了測試它在本地主機,你需要使用該地址爲

http://10.0.2.2:80/gladiolus/TestPhp/android.php 

閱讀更多關於它here

+0

我強制關閉5分鐘後,當我點擊按鈕..並顯示在logcat ...關鍵調度超時發送到com.example.webserviceapplication/com.example.webserviceapplication.MainActivity –

+0

我也試過10.0。 2.15:80但它什麼也沒有顯示...請給我一些建議... –

+0

我通過獲取存儲數據庫的pc的ip地址解決了這個問題 –