困扰了两天的问题,今天终于搞定了,这里要感谢下信鸽后端开发的哥们,废话就不多说了,直接上主题:
在发送POST请求到信鸽服务器时总是返回"invalid sign" 通过与Java代码校对,参数和sign都已经完全一致了,可java就可以成功,唯独erlang的request请求失败,返回-3 ,中间去看好久没看的java代码的痛苦就不多说了 。
今天通过抓包软件,截获两个请求的包信息,信息如下:
——erlang headers-------
POST /v2/push/all_device HTTP/1.1
content-type: application/x-www-form-urlencoded; boundary=----WebKitFormBoundarySy4dtGDHm71EqrZI
content-length: 95
user-agent: Erlang Cowboy
te:
host: openapi.xg.qq.com
accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
pragma: no-cache
connection: keep-alive
cache-control: no-cache
sign=71c6d3a9408b97b0af08b0277b1aa07f×tamp=1422251609&access_id=2100080448&valid_time=600&
result: {\"ret_code\":-3,\"err_msg\":\"invalid sign\"}"}
———java hesders——-----
POST /v2/push/all_device HTTP/1.1
Content-Type: application/x-www-form-urlencoded; boundary=----WebKitFormBoundarySy4dtGDHm71EqrZI
Cache-Control: no-cache
Pragma: no-cache
User-Agent: Java/1.6.0_65
Host: openapi.xg.qq.com
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
Connection: keep-alive
Content-Length: 95
sign=71c6d3a9408b97b0af08b0277b1aa07f×tamp=1422251609&valid_time=600&access_id=2100080448&
result: {"err_msg":"param message_type error!","ret_code":-1}
最后发现erlang的请求中多了个"te",可这又是底层封装好的,没办法去掉,我就赋个值,结果成功了,最后问题锁定在了header中的te未赋值的原因。
后来测试我在java中也添加te,也不赋值 java反而不会有影响,很奇怪的问题。
添加个链接,里面有详细讲解header中te的部分,英文好的可以看一看,记得要分享心得哈。
http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html
好了不多说了,开始封装推送。完事共享到github上.
相关推荐
### Erlang标准库(STDLIB)与I/O协议详解 #### 概述 Erlang是一种功能强大且灵活的编程语言,广泛应用于构建高并发、容错性良好的系统。其标准库(STDLIB)提供了丰富的函数集合以及一系列用于简化开发过程的工具。...
此“Erlang-OTP-API 离线查询英文全手册”是Erlang OTP的官方文档,包含了所有API的详细信息,是学习和开发Erlang OTP应用的重要资源。手册内容广泛,包括了以下几个核心部分: 1. **模块和函数**:手册详细列出了...
本手册是Erlang R17的官方API及stdlib文档,为开发者提供了详尽的函数介绍和使用指南。 在Erlang的stdlib(标准库)中,你可以找到各种用于处理日常编程任务的模块和函数。以下是一些核心模块和它们的关键功能: 1...
懒散的Erlang REST API包装器。 要使用Slacker,您需要一个承载令牌。 有关详细信息,请参见。 警告:令牌等效于用户名(对于给定的团队)加上密码。 安全地管理和存储它。安装Slacker是使用。 我们提供了一个make为...
公鸡(Rooster)是基于Erlang构建的一个REST框架,旨在简化开发RESTful API的过程,提供高效的性能和稳定性。 1. **Erlang基础** Erlang是一种函数式编程语言,由爱立信于1986年为电信系统设计。它的主要特性包括...
标题:“Erlang API 最新资源”所包含的知识点 1. Erlang基础数据类型和复合结构 Erlang是一种支持并发编程的函数式编程语言,它以简洁和轻量级闻名。Erlang的核心数据类型非常简单,包括8种基本数据类型:整数...
《OpenTelemetry-Erlang-API:Erlang与Elixir的可观测性框架解析》 在分布式系统开发中,监控和日志分析是至关重要的环节,它们帮助开发者了解系统的运行状态,快速定位并解决问题。OpenTelemetry是一个跨平台的可...
在Erlang和Yaws中实现REST服务,你可以利用Erlang的并发特性和Yaws的高效处理能力,创建可扩展且健壮的服务。例如,appmod和yapp可以方便地处理HTTP请求,根据请求方法和URI来执行相应的业务逻辑。同时,Erlang的 ...
#WeDebugger-Web版Erlang代码断点调试工具 weDebugger是关于Erlang代码断点调试的工具,使用时将该项目做为目标项目依赖下载至deps目录中,然后在项目启动时调用we:start()以启动断点调试服务。 ####运行项目 该项目...
Leptus 是一个运行于Cowboy框架之上的 Erlang REST框架。Leptus 的目的是让我们便捷地创建 RESTful API。要求:Erlang/OTP R15B or newercowboyjiffy or jsxmsgpack示例代码:-module(hello). -compile({parse_...
`erlang-consul` 客户端库使Erlang开发者能够轻松地利用Consul的REST API,主要特性包括: 1. **全面的API覆盖**:库包含了Consul的所有主要功能,如服务注册、服务发现、健康检查、KV操作等。 2. **异步调用**:...
- **Erlang手册(5.8.2).chm**:这是一份Erlang的官方文档,包含了5.8.2版本的详细语言特性和API说明。CHM文件是Windows平台下的帮助文档格式,方便离线查阅。 - **erlang深度分析.pdf**:这本书可能提供了Erlang的...
本项目"autodeploy:Erlang REST 服务器接受 GitHub webhooks 并自动部署应用程序"正是这样一个自动化解决方案,利用Erlang编程语言构建了一个RESTful API服务器,该服务器能够监听GitHub的webhook事件,并根据接收到...
### Erlang运行时系统应用(ERTS):匹配规格与API概述 #### 一、Erlang运行时系统应用(ERTS) Erlang运行时系统应用(ERTS)是Erlang语言的核心组成部分之一,它负责管理和执行Erlang程序。ERTS包括了进程调度、...
gcm-api gcm-erlang 的 API建造 $ ./rebar3 release -d false跑步 $ _build/rel/gcm_api/bin/gcm_api console
3. **Erlang数据类型和API**:介绍CNode API,包括如何在C中表示和操作Erlang的数据类型(如整数、原子、列表等),以及如何调用Erlang函数和处理返回结果。 4. **进程通信**:阐述如何在CNode中创建Erlang进程,...
2. **API更新**:可能对Erlang的内置函数或模块进行增强,提供新的功能或修复已知问题。 3. **兼容性提升**:与先前版本相比,25.0可能增强了与其他软件或框架的兼容性。 4. **错误修复**:解决上一版本中的已知问题...
Distel是Erlang的调试工具,提供了功能强大的调试和测试功能。 readers可以从Distel官方网站下载最新的版本。安装Distel非常简单,只需要解压缩下载的文件,并将其添加到Emacs的加载路径中。 四、配置Erlang mode ...
**Erlang编程:Introducing Erlang** Erlang是一种函数式编程语言,由爱立信在1986年开发,主要用于构建高可用性、容错性和并发性的分布式系统。"Introducing Erlang"是Simon St. Laurent撰写的一本入门级教程,...
能帮助你理解erlang的基本内容和迅速进入erlang真谛