私はAndroidでwcfサービスに接続して結果を返すアプリケーションを開発しています.wcfはsoapで記述されており、接続にはKSOAP2を使用しています。
最初は特定のURLに接続していましたが、すべてがうまく機能していました。次に、URLを変更する必要があり、不明な例外が発生しますunable to resolve host:No address associated with name
。
私は調査を行い、他のすべての同様の問題の解決策は、Androidマニフェストインターネット接続に追加することでした。しかし、私はすでにそれをしました。何か提案はありますか?もう1つの詳細は、アプリケーションが正常に機能していた最初のURLを使用すると、2番目のURLはローカルサーバーにあるということです。ちなみに、私のPCはこのサーバーに正しく接続されています(つまり、私のブラウザのURLはそれに接続するのに問題はありません)
私はここに接続を確立するクラスを投稿しています:
パブリッククラスKSoapConnectorはInstantiateConnection{を実装します
private SoapObject response;
private WcfReceivedClass identifier;
private WcfReceivedClass[] receivedData;
private final String NAMESPACE = "http://microsoft.com/webservices/";
private String METHOD_NAME="GetTeacherClass";
private String SOAP_ACTION = "http://microsoft.com/webservices/IVertiSchool_SRV/GetTeacherClass";
private final String URL = "http://vertiserv1:81/VertiSchool_SRV.svc";
//below is the url which was working fine
//private final String URL = "http://wcf.schoolportal.gr/VertiSchool_SRV.SVC";
public KSoapConnector(String methodName,int mode){
SoapObject Request = new SoapObject(NAMESPACE, METHOD_NAME);
//here are the parameters for the wcf service and there values are correctly put
Request.addProperty("connString", "connectionString");
Request.addProperty("TeCode", "tCode");
Request.addProperty("Company", "cmp");
Request.addProperty("Lng", "lng");
Request.addProperty("MainPeriod", "mainPrd");
SoapSerializationEnvelope envelope = new SerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(Request);
envelope.addMapping(NAMESPACE, "SRV_Class",new SRV_Class().getClass());
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
try{
//here is where i get the exception...
androidHttpTransport.call(SOAP_ACTION, envelope);
response = (SoapObject)envelope.getResponse();
receivedData = identifier.retrieveFromSoap(response);
}
catch(Exception e){
e.printStackTrace();
}
}
これが私のマニフェットファイルです:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.myapp"
android:versionCode="1"
android:versionName="1.0" >
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-sdk android:minSdkVersion="7" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/title_activity_main" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".ListOfClasses"></activity>
</application>
Androidではローカルホストが10.0.2.2であることを知っていますが、アプリケーションはストレートをローカルサーバーに接続します...ポートを転送する必要がありますか?