请教ONS(PHP)的问题。。。-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

请教ONS(PHP)的问题。。。

2016-10-18 15:34:07 2294 1

代码:

//签名加密
public function calSignatue($str,$key)
{
    $sign = "";
    if(function_exists("hash_hmac"))
    {
        $sign = base64_encode(hash_hmac("sha1",$str,$key,true));
    }
    else
    {
        $blockSize = 64;
        $hashfunc = "sha1";
        if(strlen($key) > $blockSize)
        {
            $key = pack('H*',$hashfunc($key));
        }
        $key = str_pad($key,$blockSize,chr(0x00));
        $ipad = str_repeat(chr(0x36),$blockSize);
        $opad = str_repeat(chr(0x5c),$blockSize);
        $hmac = pack(
            'H*',$hashfunc(
                ($key^$opad).pack(
                    'H*',$hashfunc($key^$ipad).$str
                )
            )
        );
        $sign = base64_encode($hmac);
    }
    return $sign;
}
//消息发布
public function producerProcess($bodyString,$topic,$producerId,$url,$ak,$sk)
{
    //请求内容
    $request_body = utf8_encode($bodyString);
    //$request_body = $bodyString;
    //计算时间戳毫秒
    $millisecond = time()*1000;
    //请求url
    $request_url = $url."/message/?topic=".$topic."&time=".$millisecond."&tag=http&key=http";
    //签名字符串
    $signString = $topic."\n".$producerId."\n".md5($request_body)."\n".$millisecond;
    $sign = $this->calSignatue($signString,$sk);
    //请求头部
    $request_header = [
        'Signature:'.$sign,
        'AccessKey:'.$ak,
        'ProducerId:'.$producerId,
        'Content-Type:text/html;charset=UTF-8',
    ];

    //干活
    $ch = curl_init();
    curl_setopt($ch,CURLOPT_RETURNTRANSFER, 0);
    curl_setopt($ch,CURLOPT_HEADER, 1);
    curl_setopt($ch,CURLOPT_HTTPHEADER,$request_header);
    curl_setopt($ch,CURLOPT_URL,$request_url);
    curl_setopt($ch,CURLOPT_POSTFIELDS,$request_body);
    curl_setopt($ch,CURLOPT_CUSTOMREQUEST,'POST');
    $result = curl_exec($ch);
    var_dump($ch);
    var_dump($result);
    curl_close($ch);
    exit;
}

折腾2天了,都是返回:HTTP/1.1 403 Forbidden Server: Tengine Date: Tue, 18 Oct 2016 07:29:07 GMT Content-Length: 0 Connection: keep-alive resource(9) of type (curl) bool(true)。

也不知道是哪里的问题,亲熟悉ONS的大牛给看看。。

取消 提交回答
全部回答(1)
  • onemonkey
    2019-07-17 20:17:41

    403 Forbidden,是服务器返回的错误,你手工直接访问时什么错误,检查下服务器配置吧。

    0 0
相关问答

1

回答

php如何发送ons

2018-04-04 23:49:49 1689浏览量 回答数 1

1

回答

php mysql update 语句数字可以正常插入,字母汉字不行

2016-03-06 13:45:35 2783浏览量 回答数 1

1

回答

PHP+MySQL+Dreamweaver开发动态网站遇到的问题

2016-03-06 15:00:27 2038浏览量 回答数 1

1

回答

请教用PHP备份MYSQL数据的做法

2016-03-05 15:32:15 1944浏览量 回答数 1

1

回答

如何用PHP+MYSQL在一个网页里实现增删改查?

2016-03-05 15:57:57 2244浏览量 回答数 1

1

回答

PHP+MYSQL 两表联合查询问题

2016-03-06 10:23:34 1861浏览量 回答数 1

1

回答

PHP怎么能判断加了for update查询的mysql语句是否锁表了,如果锁表延时2秒呢?

2016-03-06 11:06:21 2354浏览量 回答数 1

1

回答

ubuntu安装APACHE\MYSQL\PHP的问题

2016-02-29 14:23:30 2117浏览量 回答数 1

1

回答

PHP开启mysql扩展dll的问题

2016-02-29 18:00:11 2345浏览量 回答数 1

1

回答

关于php+mysql读取评论数

2016-02-25 16:44:21 2076浏览量 回答数 1
+关注
0
文章
1
问答
问答排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载