现在,我在My iPhone Application上创建了一个HTTP Server,并在那里托管了HTML.然后在浏览器中访问位于iPhone同一网络中的系统.我可以在浏览器上看到文件.
现在使用WebSockets我试图将文件从浏览器发送到应用程序,但它不起作用.文本消息没问题,但数据没有.作为一种解决方法,我通过Base64 String尝试了它,但在这种情况下也是套接字Get Closed.
为了使用JAVAScript上传,我编写了这段代码,在这里我尝试通过发送大小为200个字符的片段的Base64字符串.
function sendFile() {
var preview = document.querySelector('img');
var file = document.querySelector('input[type=file]').files[0];
var reader = new FileReader();
var rawData = new ArrayBuffer();
reader.onloadend = function () {
var stringContent = reader.result;
preview.src = stringContent;
var array = stringContent.match(/.{1,200}/g);
for (var i = 0; i < array.length; i++) {
ws.send(array[i]);
};
}
if (file) {
reader.readAsDataURL(file);
}else {
preview.src = "";
}
}
Run Code Online (Sandbox Code Playgroud)
在iPhone方面,我使用了Libary CocoaHTTPServer的WebSocket类
插座在此处关闭.

编辑
经过大量的试验和错误后,我才知道发生这种情况如果我在Mac浏览器中打开这个,不是在任何其他设备的浏览器如iPad,iPhone.这是非常奇怪的用例,但它是真的.
编辑二
经过大量的疑惑,我发现了一个线索,这对iPhone,iPad,iPod和Opera浏览器很有效,因为它们有旧的websocket支持,我从 …
我正在使用公共Root权威证书文件X509制作httpwebrequest.我只有公钥,而不是私钥.从控制台应用程序一切正常,但它不能从asp.net应用程序.我收到错误:"底层连接已关闭:无法为SSL/TLS安全通道建立信任关系."
禁用验证的选项不是一个选项.
这是代码
HttpWebRequest req = (HttpWebRequest)WebRequest.Create("https://xxxxxxx/gateway.aspx");
string post = "abcdef";
req.ContentType = "application/x-www-form-urlencoded";
req.Method = "POST";
req.ContentLength = post.Length;
var cert = System.Security.Cryptography.X509Certificates.X509Certificate.CreateFromCertFile(@"c:\temp\root.cer");
req.ClientCertificates.Add(cert);
StreamWriter stOut = new StreamWriter(req.GetRequestStream(), System.Text.Encoding.ASCII);
stOut.Write(post.ToString());
stOut.Close();
HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
Run Code Online (Sandbox Code Playgroud)
这是System.Net和System.Net套接字的系统日志.
System.Net信息:0:[5928] SecureChannel#8106798 - 无法将证书链构建到受信任的根颁发机构.
System.Net信息:0:[5928] SecureChannel#8106798 - 用户验证远程证书无效.
System.Net.Sockets详细:0:[5928]套接字#7486778 :: Dispose()
System.Net错误:0:[5928] HttpWebRequest中的异常#51319244 :: - 底层连接已关闭:无法为SSL/TLS安全通道建立信任关系.
System.Net错误:0:[5928] HttpWebRequest中的异常#51319244 :: EndGetRequestStream - 底层连接已关闭:无法为SSL/TLS安全通道建立信任关系.
更多信息
如果我使用此代码(来自CodeGuru)
public static bool ValidateServerCertificate(object sender,
X509Certificate certificate, X509Chain chain,
SslPolicyErrors sslPolicyErrors)
{
if (sslPolicyErrors ==
SslPolicyErrors.RemoteCertificateChainErrors) {
return …Run Code Online (Sandbox Code Playgroud) 我想使用以下网页CocoaHTTPServer:应该有一个下载文件的链接,但源文件必须是NSData内存中的对象.
就我在样本中看到的,有一种简单的方法可以将iPhone上的某些文件链接到超链接.可以"链接" NSData吗?
非常感谢你的例子.
我想制作一个 iOS 应用程序(特别是针对 iPad),其行为类似于 Web 服务器。我看到了 COCOAHTTPSERVER 附带的示例,但我不明白一些东西。
我的应用程序在后台运行时是否可以接收来自同一设备中运行的另一个应用程序的请求?
如果可能的话我该怎么做?
否则,如果不可能,那么不能在后台工作的Web服务器应用程序的意义是什么?
我的具体问题如下:我需要一个 iOS 应用程序,它可以接收来自 javascript 应用程序的请求,该应用程序在同一设备中的 safari 上运行。我可以创建一个在后台表现得像 Web 服务器的应用程序(因为 safari 必须在前台),还是有另一种方法来实现这一点?
ios ×3
certificate ×1
download ×1
https ×1
hyperlink ×1
iphone ×1
javascript ×1
nsdata ×1
ssl ×1
websocket ×1