5

Web サービス RESTful API を持つアプリケーションがあります。ブラウザーで HTTP GET 要求を行うと、XML 応答が返されます。

PHP を使用して同じ要求を行うと、正しい情報が得られますが、XML でフォーマットされていないため、Simple XML に渡すことができません。

これが私のコードです。

<?php
//Deifne user credentials to use with requests
        $user = "user";
        $passwd = "user";

        //Define header array for cURL requestes
        $header = array('Contect-Type:application/xml', 'Accept:application/xml');

        //Define base URL
        $url = 'http://192.168.0.100:8080/root/restful/';

        //Define http request nouns
        $ls = $url . "landscapes";

        //Initialise cURL object
        $ch = curl_init();

        //Set cURL options
        curl_setopt_array($ch, array(
            CURLOPT_HTTPHEADER => $header, //Set http header options
            CURLOPT_URL => $ls, //URL sent as part of the request
            CURLOPT_HTTPAUTH => CURLAUTH_BASIC, //Set Authentication to BASIC
            CURLOPT_USERPWD => $user . ":" . $passwd, //Set username and password options
            CURLOPT_HTTPGET => TRUE //Set cURL to GET method
        ));

        //Define variable to hold the returned data from the cURL request
        $data = curl_exec($ch);

        //Close cURL connection
        curl_close($ch);

        //Print results
        print_r($data);

?>

どんな考えや提案も本当に役に立ちます。

S

編集:

したがって、これは PHP コードから得られる応答です。

0x100000rhel-mlsptrue9.2.3.0101

これは、WizTools Rest Client またはブラウザーを使用した場合の応答です。

<?xml version="1.0" encoding="UTF-16"?>
<landscape-response total-landscapes="1" xmlns="http://www.url.com/root/restful/schema/response">
    <landscape>
        <id>0x100000</id>
        <name>rhel-mlsp</name>
        <isPrimary>true</isPrimary>
        <version>9.2.3.010</version>
    </landscape>
</landscape-response>

ご覧のとおり、情報はありますが、PHP は実際にはこれを有用な方法で提示していません。

4

2 に答える 2

0

これを試して

    $resp = explode("\n<?", $data);
    $response = "<?{$resp[1]}";


    $xml = new SimpleXMLElement($response);

それは何か(あなたのコード)を印刷しますか?使用してみecho $dataますが、F12 を押してコンソールに結果を表示します。

于 2013-09-06T16:09:43.283 に答える