台灣最大程式設計社群網站
線上人數
1528
 
會員總數:242289
討論主題:187372
歡迎您免費加入會員
討論區列表 >> Android APP 開發 >> App無法呼叫Web service
[]  
[我要回覆]
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
App無法呼叫Web service
價值 : 50 QP  點閱數:221 回應數:0

樓主

Jimmy
門外漢
0 1
4 0
發送站內信

我在公司內部網路試做App撈取資料庫
web service是用wcf放在localhost
用夜神模擬器測試
但是一直出現連線失敗

下面這隻是App程式
[code]using Android.App;
using Android.Widget;
using Android.OS;
using Apptest.localwcf;
using System.Net;
using System;

namespace Apptest
{
[Activity(Label = "Apptest", MainLauncher = true)]
public class MainActivity : Activity
{
AutoCompleteTextView itemnumber, seqnumber, barcode;
int textcount=0;
protected override void OnCreate(Bundle savedInstanceState)
{

base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.Main);
itemnumber = FindViewById<AutoCompleteTextView>(Resource.Id.itemnum);
seqnumber = FindViewById<AutoCompleteTextView>(Resource.Id.seqnum);
barcode = FindViewById<AutoCompleteTextView>(Resource.Id.barcode);
TextView showdetail = FindViewById<TextView>(Resource.Id.showdetail);

Button btnse = FindViewById<Button>(Resource.Id.btnsearch);

try
{
btnse.Click += (sender, e) => {

string id = itemnumber.Text.Trim();
string se = seqnumber.Text.Trim();
string bar = barcode.Text.Trim();
Service1 wcftest = new Service1();

if (id != "" && se == "" && bar == "")
showdetail.Text = wcftest.SearchItemId(id);

if (se != "" && id == "" && bar == "")
{
try
{
showdetail.Text = wcftest.SearchSeqno(se);
}
catch (Exception ex)
{
throw ex;
}
}

if (bar != "" && se == "" && id == "")
{
showdetail.Text = wcftest.SearchBarcode(bar);
}

};
}
catch (Exception ex0)
{
throw ex0;
}
}
}
}[/code]

另一邊的WCF只需要回傳輸入的值就可以
用加入參考的方式可以成功回傳
因為需要進行資料庫的撈取
所以就要發行到IIS

但只要發布到IIS
並在APP加入Web參考

http://localhost/Service1.svc?wsdl

但按下按鈕就會出現錯誤
有試著把localhost改為自己的IP或是電腦名稱
App一開始可以執行
使用try catch但卻抓不到例外
下面是localhost的結果

01-02 16:21:41.004 E/mono (10064): System.Net.WebException: Error: ConnectFailure (Connection refused) ---> System.Net.Sockets.SocketException: Connection refused
01-02 16:21:41.004 E/mono (10064): at System.Net.Sockets.Socket.Connect (System.Net.EndPoint remoteEP) [0x000b6] in <6c708cf596db438ebfc6b7e012659eee>:0
01-02 16:21:41.004 E/mono (10064): at System.Net.WebConnection.Connect (System.Net.HttpWebRequest request) [0x0016d] in <6c708cf596db438ebfc6b7e012659eee>:0
01-02 16:21:41.004 E/mono (10064): --- End of inner exception stack trace ---

改成IP或電腦名稱則會出現這個錯誤
01-02 15:46:20.194 E/mono ( 9512): System.Web.Services.Protocols.SoapException: 由於 EndpointDispatcher 的 AddressFilter 不符,因此接收者無法處理具有 To '' 的訊息。請檢查傳送者與接收者的 EndpointAddresses 是否一致。
In mgmain JNI_OnLoad

模擬器可以連到內部server
在裡面瀏覽器輸入網址也可以通
也改過.vc\config\applicationhost.config
<site name="WcfService1" id="8">
<application path="/" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="C:\Users\G97734\Documents\Visual Studio 2015\Projects\DemoMVC\WcfService1" />
</application>
<bindings>

<binding protocol="http" bindingInformation="*:9608:172.16.2.43" />
</bindings>
</site>


請問該怎麼解決才可以讓我的App順利使用WCF在localhost運行




搜尋相關Tags的文章: [ Android ] , [ web service ] , [ wcf ] , [ C# ] , [ visual studio ] ,
本篇文章發表於2018-01-03 15:27
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
目前尚無任何回覆
   

回覆
如要回應,請先登入.