Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Web Service Java --- PHP


Автор: griga 15.11.2011, 12:25
Здравствуйте,
я новый в JAVA поэтому не судите строго. Мне необходимо организовать связь между сервером синхронизации и БД(Mysql). Со стороны БД организовал скрипт на PHP(сервер, работающий с библиотекой NUSOAP). Мне необходимо организовать на ява клиента вэб сервиса, который будет посылать на сервер(PHP) некоторые данные и после обработки запросов в БД получит от сервера ответ. От разновидностей SOAP библиотек для JAVA уже в глазах пестрит. Но пока ни один пример не могу заставить с моим сервисом работать. Посоветуйте мне пожалуйста, с чего лучше начать. И какой пример простейший клиента на JAVA с нормальным описанием. 
Заранее благодарен за помощь.

Автор: griga 15.11.2011, 20:58
вот код клиента:
Код

package client;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import javax.xml.namespace.QName;
import java.net.*;
import javax.xml.rpc.NamespaceConstants;

public class Client {

     public static void main(String[] args) throws Exception{
        // TODO code application logic here
        Service service = new Service();
        Call call = (Call)service.createCall();
        String endpoint = "http://localhost/server/server1.php";
        call.setTargetEndpointAddress(new URL(endpoint));
        call.setOperationName(new QName("hello"));
        String result =(String)call.invoke(new Object[]{new String("griga")});
        System.out.println(result);
    }
}


вот ошибка, которую я получаю:
Код

Exception in thread "main" AxisFault
 faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
 faultSubcode: 
 faultString: org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; Content is not allowed in prolog.
 faultActor: 
 faultNode: 
 faultDetail: 
    {http://xml.apache.org/axis/}stackTrace:org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; Content is not allowed in prolog.
    at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
    at org.apache.xerces.util.ErrorHandlerWrapper.fatalError(Unknown Source)
    at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
    at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
    at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
    at org.apache.xerces.impl.XMLScanner.reportFatalError(Unknown Source)
    at org.apache.xerces.impl.XMLDocumentScannerImpl$PrologDispatcher.dispatch(Unknown Source)
    at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
    at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
    at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
    at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
    at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
    at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
    at org.apache.xerces.jaxp.SAXParserImpl.parse(Unknown Source)
    at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
    at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
    at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)
    at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62)
    at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206)
    at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
    at org.apache.axis.client.Call.invoke(Call.java:2767)
    at org.apache.axis.client.Call.invoke(Call.java:2443)
    at org.apache.axis.client.Call.invoke(Call.java:2366)
    at org.apache.axis.client.Call.invoke(Call.java:1812)
    at client.Client.main(Client.java:28)

    {http://xml.apache.org/axis/}hostname:griga-PC

org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; Content is not allowed in prolog.
    at org.apache.axis.AxisFault.makeFault(AxisFault.java:101)
    at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:701)
    at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)
    at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62)
    at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206)
    at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
    at org.apache.axis.client.Call.invoke(Call.java:2767)
    at org.apache.axis.client.Call.invoke(Call.java:2443)
    at org.apache.axis.client.Call.invoke(Call.java:2366)
    at org.apache.axis.client.Call.invoke(Call.java:1812)
    at client.Client.main(Client.java:28)
Caused by: org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; Content is not allowed in prolog.
    at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
    at org.apache.xerces.util.ErrorHandlerWrapper.fatalError(Unknown Source)
    at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
    at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
    at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
    at org.apache.xerces.impl.XMLScanner.reportFatalError(Unknown Source)
    at org.apache.xerces.impl.XMLDocumentScannerImpl$PrologDispatcher.dispatch(Unknown Source)
    at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
    at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
    at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
    at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
    at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
    at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
    at org.apache.xerces.jaxp.SAXParserImpl.parse(Unknown Source)
    at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
    at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
    ... 9 more
Java Result: 1
BUILD SUCCESSFUL (total time: 1 second)

Автор: griga 15.11.2011, 22:58
Люди помогите, как я сделаю проект, если helloworld не работает smile

Автор: Samotnik 15.11.2011, 23:35
griga, ошибка гуглится 
http://mark.koli.ch/2009/02/resolving-orgxmlsaxsaxparseexception-content-is-not-allowed-in-prolog.html
http://zavizionov.blogspot.com/2008/12/saxparseexception-content-is-not.html
http://www.mkyong.com/java/sax-error-content-is-not-allowed-in-prolog/
...  и т.д.
Смотрел?

Автор: griga 15.11.2011, 23:59
Почитал, но у меня же xml автоматически генерируется, каким образом я могу его посмотреть?
помоги земляку, Samotnik smile))

Автор: griga 16.11.2011, 00:43
на этом этапе разобрался, спасибо, сервер пхп был сохранен в utf8 with bom, от этого 3 лишних символа появились вначале и путанница

Автор: Samotnik 16.11.2011, 11:48
griga, об этом кажется, в первой ссылке было написано  smile 

Автор: griga 23.11.2011, 15:08
Люди, помогите советом.
скажите с чем может быть связана ошибка    
Код

SimpleDeserializer encountered a child element, which is NOT expected, in something it was trying to deserialize


Вылазит когда сервер пхп(nusoap) посылает ответ (простой массив) клиенту на JAVA(axis). До этого все идет гладко, пхп сервер получает от ява клиента сообщение с параметрами, обрабатывает, и пытается отправить обработаный ответ в виде массива.

Автор: jk1 24.11.2011, 12:15
Клиент не может смапить возвращаемую структуру на Java-типы. Что там за XML в ответе приходит?

Автор: griga 24.11.2011, 15:41
разобрался, была проблема в кодировке, указал utf8 заработало

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)