Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> взаимодействие между php и java через wsdl, php java wsdl 
:(
    Опции темы
nastya1992
Дата 1.5.2012, 19:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 2.4.2012

Репутация: нет
Всего: нет



Нужно создать взаимодействие между клиентом на php и сервером на java через веб сервисы с использованием wsdl
На клиенте генерируется строка из цифр, она передается серверу, который дописывает данные к этой строке и возвращает ее клиенту

Данные с сервера возвращаются нормально, но почему-то с клиента данные не передаются

код клиента (php):
Код

<!DOCTYPE html>
<html>
   <head>
       <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
       <title></title>
   </head>
   <body>
        <?php
           try {
                   // построение строки
                   $str_mas = '';
                   echo 'mas 1: ';
                   for ($l = 1; $l <= 81; $l++){
                           $k = rand(0, 9);
                           $str_mas .= $k;
                   }
                   echo $str_mas.'<br />';

                   // создаем клиента, указываем сервер
                   $client = new SoapClient("http://localhost:8080/testserver/newservice?wsdl");
                   // передача данных и получение результата
                   echo  $client->hello($str_mas)->return;

           }
           catch (Exception $e) {
                   echo 'ECSEPT:: '.$e->getMessage();
           }
       ?>
   </body>
</html>



код сервера (java):
Код

import javax.jws.WebService;
import javax.jws.WebMethod;
import javax.jws.WebParam;

@WebService(serviceName = "newservice")
public class newservice {

    @WebMethod(operationName = "hello")
    public String hello(@WebParam(name = "name") String txt) {
        return "hello "+txt+"!";
    }
    
}


полученный 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://tst/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://tst/" name="newservice">
<types>
<xsd:schema>
<xsd:import namespace="http://tst/" schemaLocation="http://localhost:8080/testserver/newservice?xsd=1"/>
</xsd:schema>
</types>
<message name="hello">
<part name="parameters" element="tns:hello"/>
</message>
<message name="helloResponse">
<part name="parameters" element="tns:helloResponse"/>
</message>
<portType name="newservice">
<operation name="hello">
<input wsam:Action="http://tst/newservice/helloRequest" message="tns:hello"/>
<output wsam:Action="http://tst/newservice/helloResponse" message="tns:helloResponse"/>
</operation>
</portType>
<binding name="newservicePortBinding" type="tns:newservice">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
<operation name="hello">
<soap:operation soapAction=""/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
</binding>
<service name="newservice">
<port name="newservicePort" binding="tns:newservicePortBinding">
<soap:address location="http://localhost:8080/testserver/newservice"/>
</port>
</service>
</definitions>


Результат работы скрипта:
Цитата

mas 1: 293027402839167388210394898900213669462968261028169363019248578562452184753926574
hello null!


Заранее спасибо!

Это сообщение отредактировал(а) MoLeX - 2.5.2012, 05:45
PM MAIL   Вверх
Fortop
Дата 1.5.2012, 20:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 1
Всего: 42



nastya1992

попробуйте пользоваться тегами Код
читать же невозможно.

Приведите сюда, что вам падает в виде SoapFault 


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
Stark
Дата 2.5.2012, 00:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 18.2.2008

Репутация: нет
Всего: 1



у Вас у wsdl-файле не описан тип который используется у входящем меседже 
Код

<message name="hello">
<part name="parameters" element="tns:hello"/>
</message>

хотелось бы посмотреть описание типов, а то судя по коду Вам было бы достаточно
Код

<message name="hello">
<part name="parameters" element="xsd:string"/>
</message>


это как вариант того куда можно посмотреть.

Я не работал из соапом на Java, возможно она неправильно обрабатывает входящий xml, я бы посмотрел на тот xml, который приходит на сервер, если там нормально передается Ваш параметр, то дальше надо искать где он теряется на сервере, если он не приходит в xml-е, то надо смотреть почему он не передается клиентом

Это сообщение отредактировал(а) Stark - 2.5.2012, 10:23
PM MAIL   Вверх
krypt3r
Дата 2.5.2012, 10:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 359
Регистрация: 9.6.2009

Репутация: нет
Всего: 16



При отладке сетевых приложений часто помогает сниффер типа wireshark. Что даст код
Код

echo  $client->hello($str_mas);

в клиенте?
PM MAIL   Вверх
Fortop
Дата 2.5.2012, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 1
Всего: 42



Раз уж полезли к снифферам (хотя зачем они тут?)

http://www.soapui.org/

кошерный вариант для работы


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
Stark
Дата 2.5.2012, 13:01 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 18.2.2008

Репутация: нет
Всего: 1



ну так зачем тут сниферы?

посмотреть xml на сервере это был как вариант с чего можно было начать поиск проблемы.

на php это можно сделать очень просто, как-то так

Код

    if (!isset($HTTP_RAW_POST_DATA)) $HTTP_RAW_POST_DATA = file_get_contents('php://input');
    file_put_contents($file, $HTTP_RAW_POST_DATA);


думаю на Java можно сделать как-то похоже
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса

Внимание: данный раздел предназначен для решения сложных, нестандартных задач.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Для профи | Следующая тема »


 




[ Время генерации скрипта: 0.1135 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.