什么是PHP Soaps multiCall相当于Magento API v2的.NET调用

时间:2011-08-26 06:00:19

标签: php .net magento

我很高兴地将一个端点连接到我的.NET项目中,制作了包装类,一切都很可爱......(我尽可能地使用PHP教程进行了翻译)我遇到了一个巨大的瓶颈,我不知道如何解决..我无法找到任何关于此的正确信息。

...所以

在PHP中,我可以使用

$calls = array( 
    array( 'catalog_product.info', 166 ), 
    array( 'catalog_product.info', 167 ), 
    array( 'catalog_product.info', 168 ), 
); 
$results = $soap->multiCall( $session_id, $calls ); 

在一次通话中,我将获得3个产品,比如70%的http开销可以节省我的费用。

在.NET中我使用此

   Dim productReturn As MS.catalogProductReturnEntity
   Private myMagento As MS.Mage_Api_Model_Server_V2_HandlerPortType = New MS.Mage_Api_Model_Server_V2_HandlerPortTypeClient
   productReturn = myMagento.catalogProductInfo(SessionID, productId, storeView, requestAttr, Nothing)

并返回一个扩展信息项。 .NET中的服务refence

Function catalogProductInfo(ByVal sessionId As String, ByVal product
As String, ByVal storeView As String, ByVal attributes As
MagentoBridge2.MS.catalogProductRequestAttributes, ByVal
productIdentifierType As String) As
MagentoBridge2.MS.catalogProductReturnEntity
Member of MagentoBridge2.MS.Mage_Api_Model_Server_V2_HandlerPortType

不接受一系列产品..

那么在.NET中如何使用PHP中使用的multiCall

1 个答案:

答案 0 :(得分:2)

点击> Some more details here

你需要在magento服务器的根目录下放一个PHP文件,看起来像这样吗

<?php
$id_start = $_GET['start'];
$id_end = $_GET['end'];

// Magento login information 
$mage_url = 'http://www.YOURSITE.co.uk/api/?wsdl=1'; 
$mage_user = 'USERNAME'; 
$mage_api_key = 'PASSWORD'; 

// Initialize the SOAP client 
$soap = new SoapClient( $mage_url ); 

// Login to Magento 
$session_id = $soap->login( $mage_user, $mage_api_key );

    $calls = array(); 
    for ($id_start; $id_start <= $id_end; $id_start++)
        {
        array_push($calls, array( 'catalog_product.info', $id_start ));
        }

    $results = $soap->multiCall( $session_id, $calls ); 

    echo json_encode($results);
?>

右键! Simples !!!!!!!!!!!!然后在.NET中你有一个很好的功能!

Function getHTTPStream() As String
        Dim myh As HttpWebRequest = HttpWebRequest.Create("http://www.YOURSITE.co.uk/prod.php?start=20&end=80")
        myh.Timeout = 30000
        myh.UserAgent = "Test"
        Dim myR As HttpWebResponse = myh.GetResponse()
        Dim myEnc As Encoding = Encoding.GetEncoding(1252)
        Dim mySr As StreamReader = New StreamReader(myR.GetResponseStream(), myEnc)

        Return mySr.ReadToEnd()
    End Function

注意我通过start=20;这是它将从end=80

开始的ID

TADAAAAAAAAAAAAAAAAAAAAAa ..

现在你需要在.NET中做的就是将JSON转换为表格...例如使用THIS 你知道吗!我现在可以在Visual Studio Freaking .NET中请求关于每秒约100个产品的项目的完整扩展信息! Whoooooooooohoooooooooo !! 之前我花了3个产品在多线程请求中进行单独调用..这有什么改进。

感谢每个人的帮助。 (远处的蟋蟀)