1

ああああ!! もう一組の目が必要です。私は、.NET Web サービスを介して nusoap と PHP を使用するこのプロジェクトに取り組んできました。私が抱えている問題は、メイン オブジェクト配列内の配列が、配列内の 1 つの要素を超えて XML を形成しないことです。リクエストは配列内の 1 つの要素で成功しますが、複数の要素で XML を形成することはできません。SO 形成される XML リクエストは常に次のようになります: " <PictureIDs><long>1466020</long></PictureIDs>"

しかし、実際には次のようにする必要があります。

<PictureIDs><long>1466020</long><long>1444431</long></PictureIDs>

したがって、機能しますが、1つのPictureIDでのみ成功しますが、2番目のPictureIDでは機能しません....私が間違っていることはわかりません。私が望むのは、PictureIDs配列に複数のPictureIDを渡すことだけです...これを実現する方法について誰かがより良いアイデアを持っていますか? 生成される REQUEST XML を確認できますが、2 番目の PictureID をスキップするだけです。


私は基本的な方法を試しました:

$create_export_request = array(
    'exportRequest'=>array(
        'Credentials'=>array('UserID'=>12345),
        'ApplicationID'=>1,
        'PictureIDs'=>array('long'=>1444431,'long'=>1466020),
        'ExportType'=>'40',
        'ExportOption'=>'ALLOW_DOWNLOAD',
        'EmailFrom'=>'from@me.com',
        'RequireLogin'=>'false',
        'RetainFiles'=>'false',
        'PackageCompressionType'=>'ZIP'
        )
        );

$client = new nusoap_client('http://zzzz.WebService.asmx?WSDL',true);
$result = $client->call('ManageProcess',$create_export_request);

リクエスト:

POST /V1.2.5/ExportInterface/EMService.asmx HTTP/1.0 ホスト: dmr2.spe.sony.com ユーザー エージェント: NuSOAP/0.9.5 (1.123) コンテンツ タイプ: テキスト/xml。charset=UTF-8 SOAPAction: "http://WebService.zzz/ManageProcess" Content-Length: 1225

<?xml version="1.0" encoding="UTF-8"?><SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns2996="http://tempuri.org"><SOAP-ENV:Body><ManageProcess xmlns="http://zzzz.WebService.asmx"><exportRequest><Credentials><UserID>12345</UserID></Credentials><ApplicationID>1</ApplicationID><PictureIDs><long>1466020</long></PictureIDs><ExportType>40</ExportType><ExportOption>ALLOW_DOWNLOAD</ExportOption><EmailFrom>from@me.com</EmailFrom><RequireLogin>false</RequireLogin><RetainFiles>false</RetainFiles><PackageCompressionType>ZIP</PackageCompressionType></exportRequest></ManageProcess></SOAP-ENV:Body></SOAP-ENV:Envelope>

配列を分割するこの方法:

$credentials = array(
    'UserID' => 12345
);

$pictureIds = array(
    'long'=>1444431,
    'long'=>1466020
);

$exportOptions = array(
    'Credentials'=>$credentials,
    'PictureIDs'=>$pictureIds,
    'ApplicationID'=>1,
    'ExportType'=>'40',
    'ExportOption'=>'ALLOW_DOWNLOAD',
    'RetainFiles'=>'false',
    'RequireLogin'=>'false',
    'PackageCompressionType'=>'ZIP'
);

$client = new nusoap_client(http://zzzz.WebService.asmx?WSDL',true);
$er = array('exportRequest' => $exportOptions);
$result = $client->call('ManageProcess', array('parameters' => $er));

リクエスト:

POST /V1.2.5/ExportInterface/EMService.asmx HTTP/1.0 ホスト: dmr2.spe.sony.com ユーザー エージェント: NuSOAP/0.9.5 (1.123) コンテンツ タイプ: テキスト/xml。charset=UTF-8 SOAPAction: "http://WebService.zzz/ManageProcess" Content-Length: 1225

<?xml version="1.0" encoding="UTF-8"?><SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns2996="http://tempuri.org"><SOAP-ENV:Body><ManageProcess xmlns="http://zzzz.WebService.asmx"><exportRequest><Credentials><UserID>12345</UserID></Credentials><ApplicationID>1</ApplicationID><PictureIDs><long>1466020</long></PictureIDs><ExportType>40</ExportType><ExportOption>ALLOW_DOWNLOAD</ExportOption><EmailFrom>from@me.com</EmailFrom><RequireLogin>false</RequireLogin><RetainFiles>false</RetainFiles><PackageCompressionType>ZIP</PackageCompressionType></exportRequest></ManageProcess></SOAP-ENV:Body></SOAP-ENV:Envelope>
4

1 に答える 1

0

ここで、「長い」キーを別の値で効果的に上書きしています。

$create_export_request = array(
...
'exportRequest'=>array(
    'PictureIDs'=>array('long'=>1444431,'long'=>1466020),

送信する前に、その配列を確認してください。のように、または同様の方法でそれらを配列に追加する可能性が高くなります'PictureIDs'=>array(1444431, 1466020)。それが役立つことを願っています。

于 2012-10-16T02:34:15.400 に答える