質問

AndroidアプリからWebサービスに電話しようとしています。 JavaにHibernateを含むレコード(製品バーコード、製品名)を挿入するWebサービスを展開し、テストするアクティビティを書きました。

AVDで実行すると、ConnectionExceptionがありました。 Connection refused

これが私のコードです:

package com.market_helper.app;

import android.R.string;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapPrimitive;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;
import org.ksoap2.serialization.PropertyInfo;

public class Market_helper_androidActivity extends Activity {

    private static final String SOAP_ACTION = "http://localhost:7675/market_helper/services/Main";
    private static final String METHOD_NAME = "insertProduct";
    private static final String NAMESPACE = "http://localhost:7675/market_helper/services/";
    private static final String URL = "http://localhost:7675/market_helper/services/Main?wsdl";

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);


        setContentView(R.layout.main);

        try {
            SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
           request.addProperty("barCode", "12345");

           request.addProperty("productName", "abc");
            SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
            envelope.setOutputSoapObject(request);
            HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
            androidHttpTransport.call(SOAP_ACTION, envelope);

            Object result = envelope.getResponse();


        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Androidでの私の最初のWebサービスであり、コードが正しいかどうかはわかりません。私は呼ばれる方法を呼んでいます insertProduct(String barCode,String productName). 。 Webサービスは機能し、テストされています。

役に立ちましたか?

解決

private static final String SOAP_ACTION = "http://localhost:7675/market_helper/services/Main"; 

あなたはlocalhostを与えました

LocalHostの代わりにIPアドレスで試してください

これが好きです

   private static final String SOAP_ACTION = "http://10.120.159.87:7675/market_helper/services/Main"; 

他のヒント

AndroidManifest.xmlでは、インターネット許可が設定されていることを確認してください。これがすべてうまくいったと同じ問題が発生していました。

<uses-permission android:name="android.permission.INTERNET" />
private static final String URL = "http://localhost:7675/market_helper/services/Main?wsdl";

この行では、URLの最後にある「?wsdl」を削除して、ur webserviceのextension(.asmxまたは.svc)を最後に配置するのが間違っています。

private static final String URL = "http://localhost:7675/market_helper/services/Main.asmx";

私を助けてくれてありがとう、私はURLで自分の問題を修正しました
IPConfigコマンドを使用してローカルIPを取得しました
ポート7675は私のApacheTomcatサーバーによって使用されます
ファイアウォール例外ポートにポートを追加して、それが機能することを確認しました。

そして、私が変更したasmxファイルはありませんか?wsdl
これで、ブラウザからWSDLの説明が表示されます。

名前空間はXMLファイル「main.wsdl」からのものです。
<schema elementFormDefault="qualified" targetNamespace="http://app.market_helper.com" xmlns="http://www.w3.org/2001/XMLSchema">

正しいコードはこちらです: private static final String SOAP_ACTION = "http://app.market_helper.com/insertProduct"; private static final String METHOD_NAME = "insertProduct"; private static final String NAMESPACE = "http://app.market_helper.com"; private static final String URL = "http://192.168.1.2:7675/market_helper/services/Main?wsdl";
これで、AndroidアプリからWebサービスを今すぐ使用できます。
私と同じ問題を抱えている人のために私の正しいコードを送り返します。

エクスプローラーを開くと見ることができます。このウェブサイトを使用しています

「http://ローカルホスト:49674/service.svc」

何を書くべきですか?私はいつもキャッチを試してエラーが発生します。 .NET WebServiceでWCFを使用しました。およびEntityFramework。

     private final String NAMESPACE="http://tempuri.org/IService/";
     private final String SOAPACTION="http://tempuri.org/IService/GetTreatmentValues";
     private final String METHODNAME="GetTreatmentValues";    
    private final String URL="http:// local host:49674/Service.svc";

私のエラーはどこにありますか? (KSOAP 2.4も使用します)

private static final String SOAP_ACTION = "http://localhost:7675/market_helper/services/insertProduct"; 

SOAP ACTION=NAMESPACE+METHOD NAME;
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top