没用过这个,这个 Open API 是怎么调用的,是 HTTP 还是别的,如果是HTTP  话,是 GET 还是 POST?一般来说,打算全球做生意,你的程序应该用 UTF8字符集,如果数据本身有中文时没有注意字符集的问题的话,服务器就认为你可能是在试探性的寻找它的漏洞,因此它提示无效的签名,(就是说,你不要试了,你想调用的方法不存在),因为服务器认为,如果你和我有正常的合作关系,你就应该知道这其中的约定是什么,你不知道那你可能就是入侵者。

解决方案 »

  1.   

    这个问题很明显。。你提交的某个字段参与了签名过程而这个字段包括中文。
    一般的接口签名的时候会指定编码参数的,比如gbk,utf8一类的。。
    你的这个接口很可能需要你在签名前就需要进行字符编码
    还有种可能,这个字段可能需要转义
      

  2.   

    谢谢。http://gw.api.alibaba.com/dev/doc/intl/sys_qa.htm?ns=aliexpress.open
    这个是他的签名说明,
    2. 签名错误
    返回结果为:{"error_code":400,"error_message":"com.alibaba.openapi.gateway.exceptions.RequestValidateException:Invalid signature.","exception":"com.alibaba.openapi.gateway.exceptions.RequestValidateException: Invalid signature."}a. 如果请求参数中带中文或者日期(如:20120228212041422+0800),所有参数需在UrlEncode之前计算签名,也就是用原始的参数计算签名;签名完成后,在请求前应对参数用utf-8进行UrlEncode,再访问阿里巴巴开放平台。可以使用签名测试工具测试签名的正确性b. 如果根据当前url和请求参数计算的签名和签名测试工具一致,那么只可能是传到后端服务的参数与代码中的参数不一致,可能原因是使用 get请求的参数内容太长(换成post请求试试),也可能是特殊字符的编码格式不对(设置Content-type为"application/x-www-form-urlencoded; charset=UTF-8"试试)c. 如果请求中涉及文件上传,文件字节流参数不参与签名计算;另外,需指定请求的form enctype属性为multipart/form-data
    按照他的做法也不行,奇怪了。。
      

  3.   

    不清楚,不过现在  还是  :Invalid signature  验证通不过。