小编Le *_*ton的帖子

相同的请求在Java Apache中超时,在邮递员中工作正常

我正在尝试根据官方api文档注册Office365 Api webhook .我在邮递员中尝试过,所有工作都按预期进行.

Java版本:1.7(我知道......)

我正在使用Play框架版本1.2.7.2

HttpClient的: org.apache.http.client.HttpClient

相关文件:

订阅过程如下:

客户端应用程序为特定资源发出订阅请求(POST).它包括通知URL以及其他属性.

Outlook通知服务尝试使用侦听器服务验证通知URL.它在验证请求中包含验证令牌.

如果侦听器服务成功验证了URL,则会在5秒内返回成功响应,如下所示:

将响应标头中的内容类型设置为text\plain.在响应正文中包含相同的验证令牌.返回HTTP 200响应代码.监听器可以随后丢弃验证令牌.根据URL验证结果,Outlook通知服务会向客户端应用程序发送响应:

如果URL验证成功,则服务将使用唯一的订阅ID创建订阅,并将响应发送到客户端.如果URL验证不成功,则服务会发送错误响应,其中包含错误代码和其他详细信息.在收到成功响应后,客户端应用程序会存储订阅ID以将未来通知与此订阅相关联.

邮差要求:

两个请求都被wireshark拦截:

邮差:

Ý`!Ë2@ʸ1cÊþßV:
ðîPOST /api/v2.0/me/subscriptions HTTP/1.1
Content-Type: application/json
cache-control: no-cache
Postman-Token: a24df796-c49e-4245-a1cf-0949cd6538b6
Authorization: Bearer ###
User-Agent: PostmanRuntime/7.4.0
Accept: */*
Host: localhost:3000
accept-encoding: gzip, deflate
content-length: 430
Connection: keep-alive

{
    "@odata.type":"#Microsoft.OutlookServices.PushSubscription",
    "ChangeType": "Created, Deleted, Updated",
    "ClientState": "some-token",
    "NotificationURL": "https://###/office365/receive.php?subId=5",
    "Resource": "https://outlook.office.com/api/v2.0/me/Calendars('###')/events"
}
Run Code Online (Sandbox Code Playgroud)

(在wireshark中捕获)(###部件被移除信息,我确保auth和id匹配)

###/office365/receive.php躺着一个PHP脚本,刚刚回显$_GET['validationtoken'].这在Postman中非常有效.

在Java中,我创建了一个具有相同标题和相同主体的请求

E/@@5â$¸³zêð-gÄV$
Là¼Là¼POST /api/v2.0/me/subscriptions HTTP/1.1
Accept: */*
Content-Type: application/json
Authorization: Bearer ### …
Run Code Online (Sandbox Code Playgroud)

java apache

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

标签 统计

apache ×1

java ×1