- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在使用这个实验性 api https://github.com/mtorak/java-lync-client连接到我们的 lync 2013 服务器。
然而它根本不起作用。我可以将该包部署到调用 web 服务的 jboss 7.1.1,但答案为空。日志显示以下内容:
12:03:23,927 INFO [stdout] (http-localhost-127.0.0.1-8080-1) REQUEST 1:<a href="https://lyncdiscover.example.com/Autodiscover/AutodiscoverService.svc/root?originalDomain=example.com" rel="noreferrer noopener nofollow">https://lyncdiscover.example.com/Autodiscover/AutodiscoverService.svc/root?originalDomain=example.com</a>
12:03:23,931 INFO [stdout] (http-localhost-127.0.0.1-8080-1) -------------------------------
12:03:23,933 INFO [stdout] (http-localhost-127.0.0.1-8080-1) ----Request Headers----
12:03:23,935 INFO [stdout] (http-localhost-127.0.0.1-8080-1) [Lorg.apache.http.Header;@123fb1a8
12:03:26,367 INFO [stdout] (http-localhost-127.0.0.1-8080-1) HTTP/1.1 403 Forbidden ( The server denied the specified Uniform Resource Locator (URL). Contact the server administrator. )
12:03:26,444 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) org.codehaus.jackson.JsonParseException: Unexpected character ('<' (code 60)): expected a valid value (number, String, array, object, 'true', 'false' or 'null')
12:03:26,446 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at [Source: java.io.StringReader@1e196a60; line: 1, column: 2]
12:03:26,448 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.codehaus.jackson.JsonParser._constructError(JsonParser.java:1433)
12:03:26,449 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.codehaus.jackson.impl.JsonParserMinimalBase._reportError(JsonParserMinimalBase.java:521)
12:03:26,451 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.codehaus.jackson.impl.JsonParserMinimalBase._reportUnexpectedChar(JsonParserMinimalBase.java:442)
12:03:26,454 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.codehaus.jackson.impl.ReaderBasedParser._handleUnexpectedValue(ReaderBasedParser.java:1198)
12:03:26,455 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.codehaus.jackson.impl.ReaderBasedParser.nextToken(ReaderBasedParser.java:485)
12:03:26,457 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.codehaus.jackson.map.ObjectMapper._initForReading(ObjectMapper.java:2770)
12:03:26,459 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.codehaus.jackson.map.ObjectMapper._readMapAndClose(ObjectMapper.java:2718)
12:03:26,461 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.codehaus.jackson.map.ObjectMapper.readTree(ObjectMapper.java:1542)
12:03:26,462 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at com.comverse.lync.LyncClient.authenticate(LyncClient.java:537)
12:03:26,464 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at com.comverse.lync.LyncClient.createApplication(LyncClient.java:620)
12:03:26,465 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at com.comverse.lync.servlet.LyncGatewayServlet.queryPresence(LyncGatewayServlet.java:107)
12:03:26,467 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at com.comverse.lync.servlet.LyncGatewayServlet.doGet(LyncGatewayServlet.java:59)
12:03:26,469 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at javax.servlet.http.HttpServlet.service(HttpServlet.java:734)
12:03:26,471 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
12:03:26,472 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329)
12:03:26,475 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248)
12:03:26,478 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275)
12:03:26,481 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161)
12:03:26,483 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:153)
12:03:26,486 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155)
12:03:26,488 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
12:03:26,490 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
12:03:26,493 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368)
12:03:26,495 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877)
12:03:26,497 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671)
12:03:26,499 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930)
12:03:26,501 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) at java.lang.Thread.run(Thread.java:744)
我查看了代码,我知道它在哪里失败了,这才是真正的开始。
在 authenticate() 方法中有以下调用。
<pre><code>LyncHttpOperationWrapper httpOpWrapper1 = doFirstRequest();
if (httpOpWrapper1 != null) {
JsonNode node;
try {
node = mapper.readTree(httpOpWrapper1.getResponseBody());
</code></pre>
似乎 doFirstRequest() 正在执行获取,但服务器拒绝它。
我试图在 firefox 中访问相同的 url,我得到了答案,我没有被拒绝。
<pre><code><resource rel="root" href="https://abs.example.com/Autodiscover/AutodiscoverService.svc/root?originalDomain=example.com">
<link rel="user" href="https://abs.example.com/Autodiscover/AutodiscoverService.svc/root/oauth/user?originalDomain=example.com"/>
<link rel="xframe" href="https://abs.example.com/Autodiscover/XFrame/XFrame.html"/>
</code></pre>
<p></p>
客户端设置如下:
private static final String LYNC_DISCOVERY_URL_KEY = "lyncDiscoveryUrl";
private static final String LYNC_DISCOVERY_URL_VALUE = "<a href="https://abs.example.com/Autodiscover/AutodiscoverService.svc/root?originalDomain=example.com" rel="noreferrer noopener nofollow">https://abs.example.com/Autodiscover/AutodiscoverService.svc/root?originalDomain=example.com</a>";
<pre><code>private static final String RESPONSE1_LINKS_SELF_HREF = "_links-self-href";
private static final String RESPONSE1_LINKS_USER_HREF = "_links-user-href";
private static final String RESPONSE1_LINKS_XFRAME_HREF = "_links-xframe-href";
private static final String RESPONSE_HEADER_WWW_AUTHENTICATE = "WWW-Authenticate";
private static final String RESPONSE_HEADER_VALUE_MSRTCOAUTH = "MsRtcOAuth";
private static final String RESPONSE_HEADER_VALUE_BEARER = "Bearer";
private static final String LYNC_EXT_POOL_HOST = "lyncextpool.example.com";
private static final String LYNC_EXT_POOL_URL = "https://lyncextpool.example.com";
private static final String X_MS_ORIGIN_HEADER_VALUE = "http://192.168.0.10";
private static final String X_MS_ORIGIN_HEADER_KEY = "X-Ms-Origin";
private static final String PROTOCOL_HTTPS = "https";
private static final String SSL_CONTEXT = "SSL";
private static final int SSL_PORT = 443;
</code></pre>
如何使用 java 从 linux 连接到 Lync 2013?
非常感谢您的提前帮助。
最佳答案
终于明白通信是怎么回事了。
问题是实际上服务器不接受 header ,因为它认为请求是外部的。
因此对于全部 5 个请求,删除 HOST 和 X_MS_ORIGIN_HEADER 允许协商,我可以访问该网页。
httpPost.setHeader(HttpHeaders.ACCEPT, "application/json");
httpPost.setHeader(HttpHeaders.CONTENT_TYPE, "application/json");
httpPost.setHeader(HttpHeaders.AUTHORIZATION, authHeaderValue);
httpPost.setHeader(HttpHeaders.ACCEPT_ENCODING, "gzip,deflate");
httpPost.setHeader(HttpHeaders.ACCEPT_LANGUAGE, "en-US");
httpPost.setHeader(HttpHeaders.CACHE_CONTROL, "no-cache");
httpPost.setHeader(HttpHeaders.CONNECTION, "keep-alive");
//httpPost.setHeader(HttpHeaders.HOST, LYNC_EXT_POOL_HOST); <= Was the bad guy
//httpPost.setHeader(X_MS_ORIGIN_HEADER_KEY, X_MS_ORIGIN_HEADER_VALUE); <= Was the bad guy
希望这可能对其他人有所帮助。网络服务真的很有用,感谢分享。
关于java - 通过 ucwa lync 2013 发送消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25255854/
我需要开发一个具有以下属性的聊天机器人: 平台 - Skype for Business On-Premise 功能 - 通过查看各种知识库(多平台 - 数据库、Web API 等)来回复用户查询 从
首先,这里有一些关于我想要完成的事情的信息,所以如果有更好的方法,我很想听听你的想法。 我正在创建一个利用 Lync UCWA 的 Android Kiosk 应用程序,它位于我工作的入口处,当访客进
我们有一个电话平台,我们希望根据电话平台中的事件更改 Lync 用户的在线状态。我们更愿意使用 UCWA REST api,因为我们熟悉 REST api 并且已经拥有大部分基础设施。 检查文档,很快
我正在使用这个实验性 api https://github.com/mtorak/java-lync-client连接到我们的 lync 2013 服务器。 然而它根本不起作用。我可以将该包部署到调用
我正在尝试为“Skype For Business”构建类似 BOT 的服务。截至目前,Microsoft BOT Framework 没有开箱即用的 channel 。在互联网上搜索,我发现使用 L
我正在使用 UCWA api 创建 Lync session URL,但我在某个步骤中遇到错误, 它与 LYNC 有关,因此试图弄清楚如何解决。我的代码是 string url_00 = ucwa
如何在官方示例的基础上通过Skype Web SDK(UCWA)获取授权? 我有一个购买的帐户来使用 Skype for Business 和 Office 365 管理面板的入口。有示例下载官方 S
我正在尝试使用 Lync UCWA 刷新 OAuth token ,按照此处的示例 https://msdn.microsoft.com/en-us/library/office/dn356686.a
过去几天,我一直在尝试使用 Microsoft 的 UCWA API(一种 REST API)为我们的 Lync 服务开发一个应用程序。要使应用程序正常运行:我首先必须使用对特定 URL 的 POST
我正在尝试使用 Nodejs 创建一个简单的 Lync 客户端。基于http://ucwa.lync.com/documentation/KeyTasks-CreateApplication我做了这样
我正在尝试连接并使用 Skype for Business API (UCWA) following this procedure ,使用 Node.js 测试脚本。 我已在 Azure AD 中注册
我们正在尝试弄清楚最新的 UCWA或 UCMA支持 Skype for Business Online。找了半天,看到2015年3月/4月有人发帖说UCMA/UCWA还不支持。但是后来,我找不到任何关
UCWA 文档指出,UCWA 目前仅适用于本地拥有 Lync 的客户。 尽管如此,如果对 Office 365 帐户使用 Lync 连接分析器,似乎可以连接到 UCWA 服务:Completed te
我正在按照本指南 ( https://msdn.microsoft.com/en-us/skype/ucwa/authenticationusingazuread ) 尝试和验证并创建 Skype 应
Skype for Business 似乎有很多不同的 SDK/API。我很难破译哪个适合服务器端 Bot 之类的应用程序,该应用程序可以将特定于域的信息传达给组织内的用户。例如,我们希望能够通过消息
现在是否可以通过 Skype for Business 连接到 Office365 服务器并使用 UCWA (ucwa.skype.com/)? 我想用这个例子 https://www.matthew
尝试在 Lync UCWA 上运行应用程序信息的 POST 请求时,我收到 502 Bad Gateway(“策略阻止请求被代理。”)。当我在没有 SSL 的情况下发出请求时,我收到 403 - Fo
我是一名优秀的程序员,十分优秀!