2012-01-19 81 views
1
連接到.NET Web服務(的.asmx)

我新的Eclipse和一般的Android編程,但我一直負責創建爲我公司的應用程序,將連接到我們的SQL Server讀一些數據作爲概念驗證。我已經下載並安裝了Eclipse Eplison和需要的Java/Android SDK。我想從簡單開始,所以我創建了一個帶有按鈕和視圖的應用程序,它的構建和工作正常。然後我在.NET(vs2010)中創建了一個簡單的WebService,並讓它在我的本地主機上運行。導航到它的作品發現(通過IE),並按計劃運作。下面是web服務(稱爲Service1.asmx的)代碼:不能與Eclipse

[WebMethod] 
    public string DisplayText(string TextToDisplay) 
    { 
     return TextToDisplay; 
    } 

現在我試圖使按鈕調用任何文字傳入的互聯網服務和顯示這裏是我使用的Eclipse中的代碼:

package com.test.android; 

import org.ksoap2.*; 
import org.ksoap2.serialization.*; 
import org.ksoap2.transport.*; 

import android.app.*; 
import android.os.*; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.TextView; 
import android.widget.Toast; 

public class ServiceUI extends Activity { 
/** Called when the activity is first created. */ 

private static final String SOAP_ACTION = "http://localhost/MyWebService/DisplayText"; 
private static final String MethodName = "DisplayText"; 
private static final String NameSpace = "http://tempuri.org/"; // "http://localhost/testservice/"; 
private static final String URL = "http://localhost/MyWebServices/Service1.asmx?wsdl"; 
TextView tv; 

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

    tv=(TextView)findViewById(R.id.tvMessage); 

    Button btn = (Button)findViewById(R.id.btnPress); 
    btn.setOnClickListener(btnListener); 
} 

public void CallWebService() 
{ 
try { 
     SoapObject request = new SoapObject(NameSpace, MethodName);   
     HttpTransportSE androidHttpTransport = new HttpTransportSE(URL); 
     SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 

     envelope.dotNet=true; 
     request.addProperty("TextToDisplay", "This is coming from android"); 
     envelope.setOutputSoapObject(request); 

     androidHttpTransport.call(SOAP_ACTION, envelope); 

     SoapObject result = (SoapObject)envelope.getResponse(); 
     tv.setText(""+result); 
    } 
    catch (Exception e) { 
     tv.setText(e.getMessage()); 
    }  
} 

private OnClickListener btnListener = new OnClickListener() 
{ 
    public void onClick(View v) 
    { 
     CallWebService(); 
    } 
}; 
} 

當我在我的AVD運行它,我得到以下錯誤: 本地主機/ 127.0.0.1:80 - 連接被拒絕

任何想法,爲什麼?我已經看了很多,很多環節就到這裏就ASMX和食,但我沒能找到一個參考我的「連接被拒絕」的錯誤。

任何幫助,非常感謝!

回答

1

嘗試的10.0.2.2爲您的URI的IP地址,而不是本地主機。

退房: this url

滾動大約一半一路下滑,並查找「的網絡地址空間」

+0

感謝這麼多...一直在尋找,現在這個答案了一段時間。非常感激! 就像一個音符;我還必須將程序「Eclipse」添加到「添加程序以通過Windows防火牆進行通信」才能使其工作。 – Robert

+0

爲什麼_that_特定的IP地址? –

+0

轉到鏈接並閱讀文檔。 –