2011-08-14 5 views
0

웹 서비스를 호출하는 Android 코드를 작성했습니다. 이제 해당 앱을 에뮬레이터가 아닌 실제 휴대 전화로 실행하고 싶습니다. Android Emulator 및 URL http://10.0.2.2/test/Service1.asmx을 사용하여 앱을 실행하면 출력이 표시되지만 http://192.168.56.1/test/Service1.asmx으로 URL을 변경하면 Android 스마트 폰에서 동일한 출력이 표시되지 않습니다. 연결이 거부되었다는 오류가 발생합니다.Android 기기에서 웹 서비스 출력을 볼 수 없습니다.

누군가가 나이 문제 여기

를 해결하는 데 도움 주시기 바랍니다하면 안드로이드 코드 :

가 분명히 작동하기 때문에 네트워크 엔드 포인트를 사용할 수있는 경우이 문제가 안드로이드 소스와 함께 거주하지 않는
   package projects.ksoap2sample; 
      import org.ksoap2.SoapEnvelope; 
      import org.ksoap2.serialization.SoapObject; 
      import org.ksoap2.serialization.SoapSerializationEnvelope; 
      import org.ksoap2.transport.HttpTransportSE; 
      import android.app.*; 
      import android.os.*; 
      import android.widget.TextView; 

      public class ksoap2sample extends Activity { 
       /** Called when the activity is first created. */ 
      private static final String SOAP_ACTION = "http://tempuri.org/HelloWorld"; 

      private static final String METHOD_NAME = "HelloWorld"; 

      private static final String NAMESPACE = "http://tempuri.org/"; 
      private static final String URL = "http://192.168.56.1/test/Service1.asmx"; 
      TextView tv; 

      @Override 
      public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.main); 
      tv=(TextView)findViewById(R.id.text1); 
      call(); 

     } 

      public void call() 
     { 
     try { 

      SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); 

      SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
     envelope.dotNet=true; 
     envelope.setOutputSoapObject(request); 

     HttpTransportSE androidHttpTransport = new HttpTransportSE(URL); 
     androidHttpTransport.call(SOAP_ACTION, envelope); 

     Object result = (Object)envelope.getResponse(); 

     tv.setText(result.toString()); 
     } catch (Exception e) { 
     tv.setText(e.getMessage()); 
     } 
     } 
    } 

답변

1

오히려 엔드 포인트를 사용할 수 없도록하는 네트워크 제한으로 인해 문제가 발생할 가능성이 큽니다.

가장 일반적인 원인은 방화벽입니다. 서비스의 호스트에서 선택한 포트 (80으로 가정)에서 트래픽이 허용/차단되도록 보장 했습니까?

10.0.0.2 경로가 작동하는 방식으로 인해 시스템에서 트래픽이 호스트에서 비롯된 것으로 생각되어 원격을 차단하는 방화벽 규칙이 면제되기 때문에 에뮬레이터에서 실행할 때 영향을받지 않습니다. 교통.

+0

나는 그것에 대해 전혀 모르겠다. 제발 내가 선택한 포트가 트래픽을 허용하는지 확인해야 어떻게 말해 줄 수 있습니까? 모든 설정을 완료해야합니까? –

+0

@ Parth_90 방화벽의 유형에 따라 다르므로 솔직히 말해서 매우 광범위한 질문입니다. 호스트가 기본 Windows 방화벽을 사용하는 Windows PC 인 서비스의 .asmx 확장으로 인해 가정 할 것입니다. 이 경우 포트 80 트래픽을 기계 안팎으로 허용하는 규칙을 사용할 수 있습니다. 물론 GUI를 통한 특정 절차는 실행중인 Windows의 버전에 따라 다르지만 Google의 빠른 검색은 사용 가능한 가이드를 보여줍니다. http://maximumpcguides.com/windows-7/opena-a- port-in-windows-7s-firewall/ –

+0

Yes ur rite .. Windows 7을 사용하고 .NET (C# 2008)에서 C#을 사용하여 웹 서비스를 만들었습니다. 또한 Android 앱 개발을 위해 Eclipse를 사용하고 있습니다. 링크를 주셔서 감사합니다. 그걸 시도하고 대답을 시도해보십시오. –

관련 문제