こんにちは、アンドロイドからウェブサービスへの接続を試しています。これを行うためには、私が行っている手順は、次のとおりです。アンドロイドとウェブサービスの接続に失敗する
はは、無料のWebサービスを見つける:http://services.aonaware.com/DictService/DictService.asmx
Androidのメーカーに
変更権限を持っているためにマニフェストファイルを、基本的なアクティビティを作成次の行を追加することにより、インターネットを使用する:
は、Androidの許可使用します。name = "android.permission.INTERNETあなた"
は、次のコードを使用してWebサービスを利用するためにksoap2ライブラリに
てみてくださいを追加します。
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv = (TextView) findViewById(R.id.textView1); SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); PropertyInfo property = new PropertyInfo(); property.setName("word"); //property.setType(String.class); property.setValue("computer"); request.addProperty(property); SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); envelope.setOutputSoapObject(request); HttpTransportSE androidHttpTransport = new HttpTransportSE(URL); Object response = null; try { androidHttpTransport.getServiceConnection(); try { androidHttpTransport.call(SOAP_ACTION, envelope); } catch (IOException e) { e.printStackTrace(); } catch (XmlPullParserException e) { e.printStackTrace(); } tv.setText("success"); response = envelope.getResponse(); response.toString(); String resultData= response.toString(); tv.setText(resultData); } catch (Exception e) { e.printStackTrace(); } }
declarationsしかし、textView1が結果を取得されていません。私のコードに何か問題はありますか?
注:私はGradleのバージョンここでは2.10
あなたはAsyncTaskを使用する必要があります。 Googleは、人々がどのようにそれをやったのかを見出す。 – Techidiot
@Bhush_Techidiot:ありがとう。あなたが正しいです! apparantly私はAsysnTaskを使用する必要があります。古いバージョンではAsyncTaskなしでOKだった。ただし、接続をテストする場合は、onCreateに次のコードを追加します。StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()。permitAll()。build(); StrictMode.setThreadPolicy(policy);
– Job
このディスカッションは本当に助けになりました:http://stackoverflow.com/questions/11969071/android-os-networkonmainthreadexception-for-webservice-ksoap – Job