2012-08-07 2 views
3

WCF web serviceAndroid application으로 전화하는 데 문제가 있습니다. 다음 URL로 전화하면 "http://10.0.2.2:80/WebService/WebServiceImpl.svc" 응답이 "200 OK"이되지만 서비스 내에서 해당 기능을 호출하려고하면 "http://10.0.2.2:80/WebService/WebServiceImpl.svc/Test" 응답이 "400 Bad request"이됩니다.Android 전화 WCF 서비스

누군가 도움을 줄 수 있습니까?

namespace WebService 
{ 
    public class WebServiceImpl : IWebServiceImpl 
    { 
     #region IRestServiceImpl Members 
     public string Test() 
     { 
      return "Test pass"; 
     } 

     #endregion 
    } 
} 

namespace WebService 
{ 
    [ServiceContract] 
    public interface IWebServiceImpl 
    { 
    [OperationContract] 
     [WebInvoke(
      Method = "GET")] 
     string Test(); 
    } 
} 

안드로이드 활동 :

public void onClick(View v) 
    { 
     // TODO Auto-generated method stub 
     HttpClient client = new DefaultHttpClient(); 
     String SERVER_HOST="10.0.2.2"; 
     int SERVER_PORT = 80; 
     String URL = "http://10.0.2.2:80/WebService/WebServiceImpl.svc/Test"; 
     HttpHost target = new HttpHost(SERVER_HOST, SERVER_PORT, "http"); 
     HttpGet request = new HttpGet(URL); 
     try 
     { 
      HttpResponse response = client.execute(target,request); 
      HttpEntity entity = response.getEntity(); 
      MessageBox(response.getStatusLine().toString()); 
     } 
     catch(Exception e) 
     { 
      MessageBox("excepton"); 
      MessageBox(e.toString()); 
     } 
    } 

    public void MessageBox(String message){ 
     Toast.makeText(this,message,Toast.LENGTH_LONG).show(); 
    } 
+0

서버에서 구성이 어떻게 생겼습니까? 그것은 올바른 동작 집합으로 webHttpBinding을 가지고 있습니까? – Rajesh

답변

1

는 첫째 브라우저에서 URL을 테스트합니다. 동일한 문제가있는 경우 매니페스트에서 서비스에 대한 웹 액세스를 사용하도록 설정하십시오.

만약 IP 10.0.2.2가 휴대 전화에서 확인할 수 있다면 보조 확인.

2

내가 해결하는 "SoapObject"코드의

부분 사용 : 답변

public static final String NAMESPACE = "http://tempuri.org/"; 
public static final String URL = "http://10.0.2.2:80/MyFirstPublishedWebService/WebServiceImpl.svc?wsdl"; 
public static final String SOAP_ACTION = "http://tempuri.org/IWebServiceImpl/Login"; 
public static final String METHOD_NAME = "Login"; 

SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); 
SoapSerializationEnvelope envelope = 
    new SoapSerializationEnvelope(SoapEnvelope.VER11); 

envelope .dotNet = true; 

envelope.setOutputSoapObject(request); 
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL); 

try { 
    androidHttpTransport.call(SOAP_ACTION, envelope); 
} 
catch (Exception e) { 

} 

알렉스, 감사합니다!