magento(麦进斗)问题3

我打算用magento的产品来映射一个基于java的服务器,我个给它们两者发送了相同的参数,但是调用php却出现了一下的错误:

'No content to map to Object due to end of input'

我的curl如下所示:

curl -v -k -X POST -H "Content-Type:application/json;charset=UTF-8" -d '{"name":"john","email":"john@doe.com"}' https://localhost:8080/webapps/api/

php的请求代码如下:

$iClient = new Varien_Http_Client();

$iClient->setUri('https://localhost:8080/webapps/api/')

        ->setMethod('POST')

        ->setConfig(array(

                'maxredirects'=>0,

                'timeout'=>30,

        ));

    $iClient->setHeaders($headers);

    $iClient->setParameterPost(json_encode(array(

"name"=>"John",

"email"=>"john@doe.com"

                    )));   

    $response = $iClient->request();

这个问题该如何解决?如果有知道的,请告诉我一下,我讲不胜感激。

 

解决方案:

你前面的工作都是对的,但是在最后的代码有错误,果你把zend_http_client。请参阅下面的方法从zend_http_client

/**

 * Set a POST parameter for the request. Wrapper around _setParameter

 *

 * @param string|array $name

 * @param string $value

 * @return Zend_Http_Client

 */

public function setParameterPost($name, $value = null)

{

    if (is_array($name)) {

        foreach ($name as $k => $v)

            $this->_setParameter('POST', $k, $v);

    else {

        $this->_setParameter('POST', $name, $value);

    }

 

    return $this;

}

 

/**

 * Set a GET or POST parameter - used by SetParameterGet and SetParameterPost

 *

 * @param string $type GET or POST

 * @param string $name

 * @param string $value

 * @return null

 */

protected function _setParameter($type, $name, $value)

{

    $parray = array();

    $type = strtolower($type);

    switch ($type) {

        case 'get':

            $parray = &$this->paramsGet;

            break;

        case 'post':

            $parray = &$this->paramsPost;

            break;

    }

 

    if ($value === null) {

        if (isset($parray[$name])) unset($parray[$name]);

    else {

        $parray[$name] = $value;

    }

我同时也修改了我的json

$iClient = new Varien_Http_Client();

$iClient->setUri('https://localhost:8080/webapps/api/')

    ->setMethod('POST')

    ->setConfig(array(

            'maxredirects'=>0,

            'timeout'=>30,

    ));

$iClient->setHeaders($headers);

$iClient->setRawData(json_encode(array(

                "name"=>"John",

                "email"=>"john@doe.com"

                )), "application/json;charset=UTF-8");   

$response = $iClient->request();

这就是我解决这个问题的方法,可能有点复杂,但是我也只知道这种了,如果你知道了有什么更好的方法解决这个问题,请告诉我。

更多信息请访问麦进斗www.maijindou.com

转载于:https://my.oschina.net/u/3350137/blog/866352

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值