2016-05-19 9 views
0

突然、私のアプリケーションのリストにデータが表示されなかったという報告をユーザにもらえました。デバイス。後で私は、6.0がインストールされているすべてのアンドロイドデバイス(すべてのアンドロイドバージョン6.0(マシュマロ))で、すべてがうまく動作していることを知った。私は迷っています - 何が起こったのか、これをどのように修正するのか分かりません。SOAP WebサービスがXAMARIN.FORMSで動作していましたが、Android 6.0以下のデバイスでは動作しません

誰でもこれを認識することができますか、またはこれを修正する方法については、可能な解決策がありますか?

私はSOAPのWebサービスを処理するクラスを持っているポータブルなライブラリが、それは以下のように実装されている私のフォームアプリでは:

public class soapwebservice 
{ 
//private Uri baseUri = new Uri("uri"); 
private static DataConnection _instance = null; 
private HttpClient client = null; 

//Contructor 
private DataConnection() 
{ 
    client = new HttpClient(new NativeMessageHandler()); 
    client.BaseAddress = baseUri; 
} 
public static DataConnection Instance { get { if (_instance == null) _instance = new DataConnection(); return _instance; } } 

public async Task<Other.ServiceResponse> RefreshRouteList() 
{ 
    try 
    { 
     var soapString = this.constructRefreshsoap(); 
     client.DefaultRequestHeaders.Clear(); 
     client.DefaultRequestHeaders.Add("SOAPAction", "https://trolderuterne.play2know.dk/GetRoutes"); 
     var content = new StringContent(soapString, Encoding.UTF8, "text/xml"); 

     using (var response = await client.PostAsync("/Classes/mobileServices.asmx", content)) 
     { 
      if (response.IsSuccessStatusCode) 
      { 
       var soapResponse = await response.Content.ReadAsStringAsync(); 
       return JsonConvert.DeserializeObject<Other.ServiceResponse>(ParseSoapResponse(soapResponse)); 
      } 
      return new ServiceResponse { Code = Codes.ServerError, Message = response.StatusCode.ToString() }; 
     } 
    } 
    catch (Exception ex) 
    { 
     return new ServiceResponse 
     { 
      Code = Codes.ServerError, 
      Message = ex.Message 
     }; 
    } 
    finally 
    { 
    } 
} 

アプリを実行しているときに私が取得エラーメッセージは次のとおりです。 「エラー:NameResolutionFailure "

私は今PCLの代わりにアンドロイドプロジェクトでWebサービスを直接消費しようとしました。

ちょうどそれを言えば、セキュリティのために私のWebサービスがプロキシを経由しています。それはまだ6.0で動作しますが、4.4を実行しているシミュレータに行くと、まだエラーが発生します: "Error:NameResolutionFailure"。

私たちのサーバーから直接、元のWebサービスをつかんでみました、私は次のようなエラーメッセージが出ます:「エラー:ConnectFailure(ネットワークが到達不能である)」

がうまくいけば、誰かがいくつかの洞察力を持っており、どのように得るために私を伝えることができます私はAndroid 6.0の下のデバイスでWebサービスから必要なデータ!

+0

プロキシを使用していると言うと、 'java.net.Proxy'または....という意味ですか? – SushiHangover

+0

私はプロキシWebサービスを意味します。決してインターネットから無作為なウェブサービスを試したことはありません。 http://www.webservicex.net/globalweather.asmx まったく新しいプロジェクトでも同じエラーが発生します。より多くの人がXamarinのエラー/バグであると確信しています。 –

答えて

0

私はXAMARIN suppportによって、ソフトウェアのベータ版をインストールするように求められました。この「ちょっと」が問題を解決しました。 SOAP Webサービスを使用できるようになりましたが、6.0未満のAndroidを使用する場合は、SSL暗号化ができません。

私は私たちのプロキシからSSL暗号化を削除し、今はすべてのバージョンで動作します!

0

NameResolutionFailureはDNSエラーのようです。しかし、あなたはプロキシを通っているので、彼らは何をしているのか知っています。彼らは最近何か変わったのですか?プロキシの有無にかかわらず、名前をIPに解決しようとすることはできますか?

ConnectFailureはサーバーに接続できないようです。代わりにIPアドレスから直接データを取得できますか? Wi-Fiとモバイルデータを介して、直接プロキシ経由でも試してみてください。

Android 6はSSLに関連するいくつかのことを変更しました。これが影響を受ける可能性がありますか?

+0

こんにちはジョー、お返事ありがとうございます。 実際には、プロキシを経由するように見えるかもしれませんが、インターネットからランダムな気象サービスを試してみましたが、同じエラーが発生するかどうかを確認するためにそれを消費しようとしました。 私はhttp://www.webservicex.net/globalweather.asmx を使用しましたが、それは同じエラーをスローします。 実際に私はSSLの変更を見ただけで問題はあるかもしれないと思っていましたが、ランダムな天気webserviceではSSL暗号化が表示されません。 –

+0

Ohh - 面白いのはAndroid 6.0、その下のすべての種類の例外! –

+0

WiFiとモバイルのデータで同じエラーが発生しますか? – joe

関連する問題