0

受信した変数をポストリクエストで転送し、そこから応答を取得する1つの関数でSoapServerを実装しました。応答を返すだけではありません。

何を試しても(curl、file_get_contents、...)、その関数からポストリクエストを実行できません->何も送信されませんが、エラーは発生しません

個別にテストし、投稿リクエストが正常に送信されたため、curl コードが機能していると確信しています。だから私の質問は: SoapServer 関数からポストリクエストを行うことさえ可能ですか?

これが私がこれまでに持っているものです: サーバーコード:

$server = new SoapServer("../wsdl/DohvatiSlobodniTermin.wsdl");

//SERVICE FUNCTIONS:
function GetSlobodniTermini(GetSlobodniTermini $GetSlobodniTermini){
    $mirth_listener=$conf->mirth_url."dohvatislobodnitermin/";


    $data = $GetSlobodniTermini->poruka;


    // use key 'http' even if you send the request to https://...
    //$options = array('http' => array('method'  => 'POST','content' => $data,'header'=> 'Content-Type: text/html\r\n'));
    //$context  = stream_context_create($options);
    //$result = file_get_contents($mirth_listener, false, $context);
    //return $result;



    //set the url, number of POST vars, POST data
    $ch = curl_init();
    curl_setopt($ch,CURLOPT_URL, $mirth_listener);
    curl_setopt($ch,CURLOPT_POST, true);
    curl_setopt($ch,CURLOPT_POSTFIELDS, $data);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1 );
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/plain'));
    //execute post
    $result = curl_exec($ch);

    //close connection
    curl_close($ch);

    return new GetSlobodniTerminiResponse($result); 
}

ini_set("soap.wsdl_cache_enabled","0");
$server->AddFunction("GetSlobodniTermini");
$server->handle();

そして私のテストクライアントコード:

$wsdl_link='http://localhost/test/service/dohvatislobodnitermin.php?wsdl';
$classmap_array=array(
  'GetSlobodniTerminiResponse' => 'GetSlobodniTerminiResponse',
  'GetSlobodniTermini' => 'GetSlobodniTermini'
);

$client = new SoapClient($wsdl_link, array('classmap' => $classmap_array));
$response = $client->GetSlobodniTermini(new GetSlobodniTermini(1, '333'));

print_r($response);
4

1 に答える 1

0

本当にばかげているように感じます:)何らかの理由で、Webサービス関数を呼び出すだけで、conf.phpファイルが含まれませんでした。問題が解決しました。

于 2013-02-11T08:56:32.000 に答える