Вопрос

Я просто не могу понять это, я сделал клиентское приложение WebSercie на Android, используя ksoap Я пытался сохранить данные на сервер, используя Webservice для отслеживания, мой клиент работает хорошо, так как я использую метод веб-севиса «SavapPointment», но когда я использую SAVEAPPORTRACKRACKING », дайте мне эту ошибку

SoapFault - faultcode: 'S:Client' faultstring: 'Cannot find dispatch method for {}' faultactor: 'null' detail: null
.

Я запутался, если это потому, что не могу найти метод, то почему, когда я использую java-приложение (не Andoid -javadektop app) как клиент, которым он преуспеет .. myServer уже развернут, а вот мой WSDL

    <definitions xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://www.w3.org/ns/ws-policy" xmlns:wsp1_2="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://service.ws.com/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://service.ws.com/" name="MeetAppService">
<types>
<xsd:schema>
<xsd:import namespace="http://service.ws.com/" schemaLocation="http://192.168.1.3:8080/MeetAppsServer/MeetAppService?xsd=1"/>
</xsd:schema>
<xsd:schema>
<xsd:import namespace="http://jaxb.dev.java.net/array" schemaLocation="http://192.168.1.3:8080/MeetAppsServer/MeetAppService?xsd=2"/>
</xsd:schema>
</types>
<message name="getAllFriendsLocation">
<part name="parameters" element="tns:getAllFriendsLocation"/>
</message>
<message name="getAllFriendsLocationResponse">
<part name="parameters" element="tns:getAllFriendsLocationResponse"/>
</message>
<message name="UpdateAppointment">
<part name="parameters" element="tns:UpdateAppointment"/>
</message>
<message name="updateFriendStatus">
<part name="parameters" element="tns:updateFriendStatus"/>
</message>
<message name="DeleteAppointment">
<part name="parameters" element="tns:DeleteAppointment"/>
</message>
<message name="SaveAppointMent">
<part name="parameters" element="tns:SaveAppointMent"/>
</message>
<message name="SaveForTracking">
<part name="parameters" element="tns:SaveForTracking"/>
</message>
<message name="getApproveFriends">
<part name="parameters" element="tns:getApproveFriends"/>
</message>
<message name="getApproveFriendsResponse">
<part name="parameters" element="tns:getApproveFriendsResponse"/>
</message>
<message name="updateUserLocation">
<part name="parameters" element="tns:updateUserLocation"/>
</message>
<message name="DeleteTrack">
<part name="parameters" element="tns:DeleteTrack"/>
</message>
<message name="hello">
<part name="parameters" element="tns:hello"/>
</message>
<message name="helloResponse">
<part name="parameters" element="tns:helloResponse"/>
</message>
<message name="SetUserLocation">
<part name="parameters" element="tns:SetUserLocation"/>
</message>
<message name="SetUserLocationResponse">
<part name="parameters" element="tns:SetUserLocationResponse"/>
</message>
<message name="SaveAppForTracking">
<part name="parameters" element="tns:SaveAppForTracking"/>
</message>
<portType name="MeetAppService">
<operation name="getAllFriendsLocation">
<input wsam:Action="http://service.ws.com/MeetAppService/getAllFriendsLocationRequest" message="tns:getAllFriendsLocation"/>
<output wsam:Action="http://service.ws.com/MeetAppService/getAllFriendsLocationResponse" message="tns:getAllFriendsLocationResponse"/>
</operation>
<operation name="UpdateAppointment">
<input wsam:Action="http://service.ws.com/MeetAppService/UpdateAppointment" message="tns:UpdateAppointment"/>
</operation>
<operation name="updateFriendStatus">
<input wsam:Action="http://service.ws.com/MeetAppService/updateFriendStatus" message="tns:updateFriendStatus"/>
</operation>
<operation name="DeleteAppointment">
<input wsam:Action="http://service.ws.com/MeetAppService/DeleteAppointment" message="tns:DeleteAppointment"/>
</operation>
<operation name="SaveAppointMent">
<input wsam:Action="http://service.ws.com/MeetAppService/SaveAppointMent" message="tns:SaveAppointMent"/>
</operation>
<operation name="SaveForTracking">
<input wsam:Action="http://service.ws.com/MeetAppService/SaveForTracking" message="tns:SaveForTracking"/>
</operation>
<operation name="getApproveFriends">
<input wsam:Action="http://service.ws.com/MeetAppService/getApproveFriendsRequest" message="tns:getApproveFriends"/>
<output wsam:Action="http://service.ws.com/MeetAppService/getApproveFriendsResponse" message="tns:getApproveFriendsResponse"/>
</operation>
<operation name="updateUserLocation">
<input wsam:Action="http://service.ws.com/MeetAppService/updateUserLocation" message="tns:updateUserLocation"/>
</operation>
<operation name="DeleteTrack">
<input wsam:Action="http://service.ws.com/MeetAppService/DeleteTrack" message="tns:DeleteTrack"/>
</operation>
<operation name="hello">
<input wsam:Action="http://service.ws.com/MeetAppService/helloRequest" message="tns:hello"/>
<output wsam:Action="http://service.ws.com/MeetAppService/helloResponse" message="tns:helloResponse"/>
</operation>
<operation name="SetUserLocation">
<input wsam:Action="http://service.ws.com/MeetAppService/SetUserLocationRequest" message="tns:SetUserLocation"/>
<output wsam:Action="http://service.ws.com/MeetAppService/SetUserLocationResponse" message="tns:SetUserLocationResponse"/>
</operation>
<operation name="SaveAppForTracking">
<input wsam:Action="http://service.ws.com/MeetAppService/SaveAppForTracking" message="tns:SaveAppForTracking"/>
</operation>
</portType>
<binding name="MeetAppServicePortBinding" type="tns:MeetAppService">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
<operation name="getAllFriendsLocation">
<soap:operation soapAction=""/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
<operation name="UpdateAppointment">
<soap:operation soapAction=""/>
<input>
<soap:body use="literal"/>
</input>
</operation>
<operation name="updateFriendStatus">
<soap:operation soapAction=""/>
<input>
<soap:body use="literal"/>
</input>
</operation>
<operation name="DeleteAppointment">
<soap:operation soapAction=""/>
<input>
<soap:body use="literal"/>
</input>
</operation>
<operation name="SaveAppointMent">
<soap:operation soapAction=""/>
<input>
<soap:body use="literal"/>
</input>
</operation>
<operation name="SaveForTracking">
<soap:operation soapAction=""/>
<input>
<soap:body use="literal"/>
</input>
</operation>
<operation name="getApproveFriends">
<soap:operation soapAction=""/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
<operation name="updateUserLocation">
<soap:operation soapAction=""/>
<input>
<soap:body use="literal"/>
</input>
</operation>
<operation name="DeleteTrack">
<soap:operation soapAction=""/>
<input>
<soap:body use="literal"/>
</input>
</operation>
<operation name="hello">
<soap:operation soapAction=""/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
<operation name="SetUserLocation">
<soap:operation soapAction=""/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
<operation name="SaveAppForTracking">
<soap:operation soapAction=""/>
<input>
<soap:body use="literal"/>
</input>
</operation>
</binding>
<service name="MeetAppService">
<port name="MeetAppServicePort" binding="tns:MeetAppServicePortBinding">
<soap:address location="http://192.168.1.3:8080/MeetAppsServer/MeetAppService"/>
</port>
</service>
</definitions>
.

Мои статическиеClassdata:

public class StaticWebServiceData {
public static final String METHOD_SAVE_FOR_TRACKING = "SaveAppForTracking";
public static final String SOAP_ACTION_TRACKING = "http://service.ws.com/SaveAppForTracking";
public static final String NAMESPACE = "http://service.ws.com/";
public static final String URL="http://192.168.1.3:8080/MeetAppsServer/MeetAppService?wsdl";
}
.

В здесь IPPlentation:

SoapObject request = new SoapObject(StaticWebServiceData.NAMESPACE, StaticWebServiceData.METHOD_SAVE_FOR_TRACKING);           
            Log.d("FBEventID", app.fbEventid);
            Log.d("NAME_SPACE", StaticWebServiceData.NAMESPACE);
            Log.d("SAVE_TRACK", StaticWebServiceData.METHOD_SAVE_FOR_TRACKING);
            Log.d("ACTION", StaticWebServiceData.SOAP_ACTION_TRACKING);

            request.addProperty("FBEventID", app.fbEventid);
            request.addProperty("FBUserID", userID[indexFriend]);
            request.addProperty("status", "not_replied");
            request.addProperty("longitude", "0.0");
            request.addProperty("latitude", "0.0");
            SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);

            HttpTransportSE ht = new HttpTransportSE(StaticWebServiceData.URL);
            ht.debug = true;
            try {
             ht.call(StaticWebServiceData.SOAP_ACTION_TRACKING, envelope);
             Log.d("web service", "Sukses" +envelope.bodyIn.toString());
            } catch (Exception e) {
                e.printStackTrace();
            }
.

Вот мой веб-сервис:

 /**
     * Web service operation
     */
    @WebMethod(operationName = "SaveAppForTracking")
    @Oneway
    public void SaveAppForTracking(@WebParam(name = "FBEventID") String FBEventID, @WebParam(name = "FBUserID") String FBUserID, @WebParam(name = "status") String status, @WebParam(name = "longitude") String longitude, @WebParam(name = "latitude") String latitude) {
         new databseDAO().saveForTracking(new TrackData(FBEventID, FBUserID, status, longitude, latitude));
    }
.

Может кто-то сказал, что здесь не так ..

Это было полезно?

Решение

в соответствии с вашей ошибкой,

Открытый класс StaticWebserviceTATA {} не доступен в вашей реализации.

Это означает, что следующие значения приходят в качестве NULL в вашей реализации.

StaticWebServiceData.NAMESPACE
StaticWebServiceData.METHOD_SAVE_FOR_TRACKING
StaticWebServiceData.URL
.

Другие советы

Спасибо user3090039 :

его расследование было правильным. Но он совсем не правильно вообще

Моя статическая переменная Это НЕ НУЛЬК ..

ошибка произошла, потому что я забыл добавить эту строку

 envelope.setOutputSoapObject(request);
.

Извините за то, что быть идиот .. хахаха .. спасибо ..

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top