小编Sha*_*son的帖子

使用PHP调用SOAP API

现在为此工作了一个星期.无法执行此代码.我想通过SOAP检索数据并在PHP中使用它.我的麻烦是,我在发送'RequesterCredentials'时遇到了麻烦.

我将显示xml代码,以便您可以看到我要发送的信息,然后是我正在使用的PHP代码.

XML示例代码

POST /AuctionService.asmx HTTP/1.1
Host: apiv2.gunbroker.com
Content-Type: text/xml; charset=utf-8
Content-Length: 200
SOAPAction: "GunBrokerAPI_V2/GetItem"

<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
 <soap:Header>
   <RequesterCredentials xmlns="GunBrokerAPI_V2">
     <DevKey>devkey</DevKey>
     <AppKey>appkey</AppKey>
   </RequesterCredentials>
 </soap:Header>
 <soap:Body>
<GetItem xmlns="GunBrokerAPI_V2">
  <GetItemRequest>
    <ItemID>312007942</ItemID>
    <ItemDetail>Std</ItemDetail>
  </GetItemRequest>
</GetItem>
Run Code Online (Sandbox Code Playgroud)

PHP代码,我用来打电话

$client = new SoapClient("http://apiv2.gunbroker.com/AuctionService.asmx?WSDL");

$appkey = 'XXXXXX-XXXXXX-XXXXXX';
$devkey = 'XXXXXX-XXXXXX-XXXXXX';

$header = new SoapHeader('GunBrokerAPI_V2','RequesterCredentials',array('DevKey' => $devkey,'AppKey' => $appkey),0);
$client->__setSoapHeaders(array($header));

$result = $client->GetItem('312343077');

echo '<pre>',print_r($result,true),'</pre>';
Run Code Online (Sandbox Code Playgroud)

结果我得到了

stdClass Object
(
[GetItemResult] => stdClass Object
    (
        [Timestamp] => 2012-11-07T18:17:31.9032903-05:00
        [Ack] => Failure
        [Errors] => stdClass Object
            (
                [ShortMessage] …
Run Code Online (Sandbox Code Playgroud)

php api soap call

4
推荐指数
1
解决办法
9422
查看次数

Magento 1.4 catalog_eav_attribute - 添加自定义列但不保存值

我为Magento 1.8开发了一个自定义模块,它可以正常工作,我现在正在将其改装为Magento 1.4.

在catalog_product_attribute/edit选项卡中,我使用观察者向表单添加字段,以便人们可以在创建或更新属性时从其他选项中进行选择.在我的安装脚本中,列is_grouped_product_filter被添加到catalog_eav_attribute表中,它确实存在.

正如我在1.8中所做的那样,在1.4中我去Mage_Adminhtml_Catalog_Product_AttributeControllersaveAction()以确保我的新字段被包含在数据数组中以保存到数据库中,事实上确实如此.

它只是不会将值保存到1.4中的自定义列.但是,在我正在处理的1.4到1.8版本之间,看起来saveAction()是相同的.

我还尝试在保存操作中手动添加我的数据,看看它是否做了什么,但事实并非如此.我使用以下方法手动将数据添加到数据阵列:

$data['is_grouped_product_filter'] = 1;
Run Code Online (Sandbox Code Playgroud)

我是否在1.4中缺少一些额外的步骤以允许我将值保存到数据库中?

php module magento entity-attribute-value

2
推荐指数
1
解决办法
1227
查看次数

PHP功能:这是不好的形式还是做得好?

我编写了一个长脚本,完全符合我的需要,但现在我发现函数的用处,所以我可以在其他脚本中使用它们.

我的脚本完全按照我最初编写的方式工作,并且与我实现我创建的函数的方式完美配合.

因为我是编写函数的新手,我从来没有看到过按照我的方式实现的,我不知道它是否是好的形式.

原始方式

foreach($get_prefixes as $prefix) {
    if($prefix['type'] == 'pre') {
        $sql  = "SHOW COLUMNS FROM `$prefix[table]` LIKE 'sku_%' ";
        $sku_cols = $objDb->query($sql);
        foreach($sku_cols as $col) {
            echo $col['Field'] . '<br>';
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

然后就是我用创建的函数做的方式.它再次完美,但有一种"适当"的方式来做到这一点?

function getSku_($table) {
    global $objDb;
    $sql  = "SHOW COLUMNS FROM `$table` LIKE 'sku_%' ";
    $sku_cols = $objDb->query($sql);
    return $sku_cols;
}

foreach($get_prefixes as $prefix) {
    if($prefix['type'] == 'pre') {
        foreach(getSku_($prefix['table']) as $col) {
            echo $col['Field'] . '<br>';
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

php function

1
推荐指数
1
解决办法
136
查看次数

标签 统计

php ×3

api ×1

call ×1

entity-attribute-value ×1

function ×1

magento ×1

module ×1

soap ×1