我正在使用 Xcode 4.4.1 为 iPad2 编写 iOS 5.1.1 应用程序。我希望能够找到在 Java 上运行的本地 http 服务器。
一旦我能够连接到 http 服务器,我需要与它通信的就是包含端口的 url。
我的问题:
1) 我应该使用 Bonjour 或在 http 服务器上运行的 DNS 服务器来发现 http 服务器本身吗?
2) 我需要使用名称和密码对 iPad2 用户进行身份验证,以便在发现 http 服务器后使用它。
我需要一些帮助来了解如何完成这两个步骤,包括源代码(如果适用于 iOS 5 和 Xcode 4.4.1)。
最佳答案
1) Bonjour 很容易与 Java 应用程序结合使用。如果您特别受虐,您可以编写自己的基于 Java 的 mDNS (Bonjour) 响应程序(我已经完成了,这不是火箭科学),但最快的方法是使用 jMDNS在你的 http 服务器中宣传它的存在。我不会复制和粘贴代码示例,但它们足以满足大多数应用程序的需求。
在 iOS 端,NSNetService是你的 friend 。从根本上讲,它涉及在后台启动响应程序来查找服务(即您的 Java 应用程序),然后在某些内容出现/消失时调用委托(delegate):
id delegateObject; // Assume this exists.
NSNetServiceBrowser *serviceBrowser;
serviceBrowser = [[NSNetServiceBrowser alloc] init];
[serviceBrowser setDelegate:delegateObject];
[serviceBrowser searchForServicesOfType:@"_http._tcp" inDomain:@""];
有一个guide这就解释了这一切。该协议(protocol)已经 10 多年没有改变,并且所有现代 iOS/OS X 版本都支持它。 jMDNS 库在这个阶段也经过了很好的考验。
如果您不希望搜索 _http._tcp 的其他应用看到该服务类型,您可以考虑创建自己的服务类型。
,尽管这只是装饰性的东西。
2) 最简单的方法是 HTTP 基本身份验证;您没有说明您的应用程序支持哪种身份验证或如何在客户端发出 HTTP 请求,但这是 pretty嗯covered已经。
关于java - 使用iOS iPad2连接并登录运行HTTP服务的Java服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12307016/