2016-03-13 116 views
0

我無法使用netbeans連接模擬器。錯誤:SocketException:超時。如何連接android模擬器與netbeans上的web服務?

安卓

import java.io.BufferedReader; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.net.Socket; 
import java.net.SocketException; 

import org.apache.http.HttpResponse; 
import org.apache.http.client.methods.HttpGet; 
import org.apache.http.impl.client.DefaultHttpClient; 
import org.json.JSONObject; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 
import android.widget.Toast; 

public class MainActivity extends Activity implements OnClickListener{ 

    private Button button1,button2; 
    private TextView textView1,textView2,textView3,textView4,textView5,textView6,textView7,textView8,textView9,textView10,textView11,textView12; 
    private EditText editText1,editText2; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     button1=(Button)findViewById(R.id.button1); 
     button2=(Button)findViewById(R.id.button2); 
     editText1=(EditText)findViewById(R.id.editText1); 
     editText2=(EditText)findViewById(R.id.editText2); 

     textView1=(TextView)findViewById(R.id.textView1); 
     textView2=(TextView)findViewById(R.id.textView2); 
     textView3=(TextView)findViewById(R.id.textView3); 
     textView4=(TextView)findViewById(R.id.textView4); 
     textView5=(TextView)findViewById(R.id.textView5); 
     textView6=(TextView)findViewById(R.id.textView6); 
     textView7=(TextView)findViewById(R.id.textView7); 
     textView8=(TextView)findViewById(R.id.textView8); 
     textView9=(TextView)findViewById(R.id.textView9); 
     textView10=(TextView)findViewById(R.id.textView10); 
     textView11=(TextView)findViewById(R.id.textView11); 
     textView12=(TextView)findViewById(R.id.textView12); 
    button1.setOnClickListener(this); 
    button2.setOnClickListener(this); 
    } 
    @Override 
    public void onClick(View v) 
    { 
     if(v==button1) 
     { 
      String a=editText1.getText().toString(); 
      String b=editText2.getText().toString(); 

      ConsumeWS objws=new ConsumeWS(); 

      objws.execute(a+"/"+b); 

     } 
    } 
    class ConsumeWS extends AsyncTask<String, Integer, String> 
    { 

     @Override 
     protected String doInBackground(String... params) { 
      // TODO Auto-generated method stub 
      try{ 
      String un=params[0]; 

      String url="http://127.0.0.1/UserMaintn/webresources/LoginEmp/"+un;/*mobile number is basically data attached to the url. */ 
      DefaultHttpClient client=new DefaultHttpClient(); 
      HttpGet req=new HttpGet(url); 
      req.setHeader("Accept","application/json");/*validation to check what type of data is being sent..server will b informed abt the data beiing sent */ 
      req.setHeader("Content-type","application/json");/*to define the TYPE of data being attached to the url */ 
      HttpResponse resp=client.execute(req);/*information in response..server data->defines total length,type,amount of data */ 
      InputStream is =resp.getEntity().getContent();/* used to get the content*/ 
      StringBuilder sb=new StringBuilder();/* Process it..which form to store the data..if data is in string.,json,image,pdf..etc*/ 
      String t; 
      BufferedReader br=new BufferedReader(new InputStreamReader(is)); 

      while((t=br.readLine())!=null) 
      { 
       sb.append(t); 
      } 

      return sb.toString(); 
      } 
      catch(Exception e) 
      {e.printStackTrace(); 

      } 



      return null; 
     } 


     @Override 
     protected void onPreExecute() { 
      // TODO Auto-generated method stub 
      super.onPreExecute(); 
     } 
     @Override 
     protected void onPostExecute(String result) { 
      // TODO Auto-generated method stub 
      try{ 
       if(result!=null) 
       { 
        JSONObject obj=new JSONObject(result); 

        String username=obj.getString("name"); 
        String password=obj.getString("password"); 
        /*String contact_num=obj.getString("empcontact"); 
        String emp_name=obj.getString("empname"); 
        String dob=obj.getString("empdoj"); 
        String usertype=obj.getString("emptype"); 
        Boolean status=obj.getBoolean("empstatus"); 
        Double salary=obj.getDouble("empsalary"); 
        String address=obj.getString("empaddress"); 
        String email=obj.getString("empemail");*/ 
        Bundle b=new Bundle(); 

        b.putString("n1",username); 
        b.putString("n2",password); 
        /*b.putString("n3",contact_num); 
        b.putString("n4",emp_name); 
        b.putString("n5",dob); 
        b.putString("n6",usertype); 
        b.putBoolean("n7",status); 
        b.putDouble("n8",salary); 
        b.putString("n9",address); 
        b.putString("n10",email);*/ 
        Intent i =new Intent(MainActivity.this,DisplayData.class); 
        i.putExtras(b); 
        startActivity(i); 

        textView3.setText(username+""); 
        textView4.setText(password+""); 
        /*textView5.setText(contact_num+""); 
        textView6.setText(emp_name+""); 
        textView7.setText(dob+""); 
        textView8.setText(usertype+""); 
        textView9.setText(status+""); 
        textView10.setText(salary+""); 
        textView11.setText(address+""); 
        textView12.setText(email+"");*/ 

      // Socket s = new Socket("192.168.1.104",11555); 


       } 
       else 
       { 
        Toast.makeText(MainActivity.this, "Error", Toast.LENGTH_LONG).show(); 
       } 
      } 
      catch(Exception e) 
      { 
       e.printStackTrace(); 
      } 

} 

NetBeans : 

@Path("/LoginEmp") 
public class LoginEmp { 


    @Context 
    private UriInfo context; 

    /** 
    * Creates a new instance of LoginEmp 
    */ 
    public LoginEmp() { 
    } 

    /** 
    * Retrieves representation of an instance of com.LoginEmp 
    * @return an instance of java.lang.String 
    */ 
    @GET 
    @Produces("application/json") 
    @Path("login/{un}/{pass}") 
    public String getText(@PathParam("un")String name, @PathParam("pass")String password) { 
      EmpBean objbean; 
     Connection conn=null; 
     PreparedStatement pstmt=null; 
      ResultSet rs=null; 
      String s=""; 
      try 
      { 
       conn=DBConnection.connect(); 
       pstmt=conn.prepareStatement("select * from users where name=?"); 
       pstmt.setString(1,name); 
       pstmt.setString(2,password); 

       rs=pstmt.executeQuery(); 
       while(rs.next()) //if account exists then it checks this condition only 
       { 
        objbean=new EmpBean(); 
         // if(rs.getBoolean("user_status")==true) 
         // { 
            // return 1; 
            //objbean.setName(rs.getString("emp_name")); 
            objbean.setUsername(rs.getString("name")); 
            objbean.setPassword(rs.getString("password")); 
           // objbean.setEmail(rs.getString("email_id")); 
           // objbean.setContact(rs.getString("contact_num")); 
            // objbean.setEmpDOJ(rs.getString("dob")); 
            //objbean.setEmpStatus(rs.getBoolean("user_status")); 
            //objbean.setSalary(rs.getDouble("salary")); 
            //objbean.setType(rs.getString("usertype")); 
            // objbean.setAddress(rs.getString("address")); 
            Gson gs=new Gson(); 
            s=gs.toJson(objbean); 

           return s; 

          // } 


       } 
      } 
      catch(Exception e) 
      { 
       System.out.println(e); 

      } 
      finally 
     { 
      try 
      { 
       rs.close(); 
       pstmt.close(); 
       conn.close(); 
      } 
      catch(Exception e) 
      { 
       System.out.println(e); 
      } 
     } 

       return "invalid"; 

    } 

回答

3

你在不同的設備(模擬器),所以它不能在本機上找出127.0.0.1地址。您必須使用您的IPv4地址(您可以通過cmdipconfig命令知道)而不是使用本地主機地址(127.0.0.1)。

+0

謝謝你,先生。 我嘗試使用IPv4地址,但它仍然顯示SocketException錯誤 – Jasmine

相關問題