- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试通过 StreamSocket 发送 HTTP 请求,但响应被 chop 为
“failedWinRTError:对象已关闭。”
这是我的代码:
var count, hostName, raw_request, raw_response, reader, socketProtection, startReader, streamSocket, writer;
streamSocket = new Windows.Networking.Sockets.StreamSocket();
hostName = new Windows.Networking.HostName("www.reddit.com", "80");
raw_response = "";
count = 0;
startReader = function() {
return reader.loadAsync(8 * 1000).done(function(bytesRead) {
raw_response += reader.readString(reader.unconsumedBufferLength);
if (raw_response.indexOf("</html>") > 0) {
return;
} else {
startReader();
}
}, function(error) {
raw_response += reader.readString(reader.unconsumedBufferLength);
window.raw_response = raw_response;
return;
});
};
streamSocket.connectAsync(hostName, "80", 0).done(function(response) {
var string;
reader = new Windows.Storage.Streams.DataReader(streamSocket.inputStream);
reader.inputStreamOptions = 1;
writer = new Windows.Storage.Streams.DataWriter(streamSocket.outputStream);
string = "Hello world";
writer.writeString(raw_request);
return writer.storeAsync().done(function() {
writer.flushAsync();
writer.detachStream();
return startReader();
});
});
我注意到响应的开头也被 chop 了。
这是我在 HTTP 响应开始时得到的。
/1.1 200 OK
同样奇怪的是......HTTPS 请求工作得很好。
知道我做错了什么吗?谢谢:)
最佳答案
去掉主机名中的http://,第二个参数就不需要了:
var hostName = new Windows.Networking.HostName("www.reddit.com");
在 ConnectAsync 中使用这个对象,只需要主机名和服务名参数:
streamSocket.connectAsync(hostName, "80").done(function (response) {
// ....
}, function (error) {
console.log(error);
});
更新: 好的,如果连接正在关闭,可能是服务器关闭了它。您发送的请求格式正确吗?这是一个例子:
var raw_request, raw_response, reader, writer;
var streamSocket = new Windows.Networking.Sockets.StreamSocket();
function doRequest() {
var hostName = new Windows.Networking.HostName("www.reddit.com");
streamSocket.connectAsync(hostName, "808").then(function () {
reader = new Windows.Storage.Streams.DataReader(streamSocket.inputStream);
reader.inputStreamOptions = Windows.Storage.Streams.InputStreamOptions.partial;
writer = new Windows.Storage.Streams.DataWriter(streamSocket.outputStream);
raw_request = "GET / HTTP/1.1\r\nHost: www.reddit.com/\r\nConnection: close\r\n\r\n";
writer.writeString(raw_request);
return writer.storeAsync();
}).then(function () {
raw_response = "";
return startReader();
}, function (error) {
console.log(error);
});
}
function startReader() {
return reader.loadAsync(99999999).then(function (bytesRead) {
raw_response += reader.readString(reader.unconsumedBufferLength);
if (bytesRead === 0) {
window.raw_response.value = raw_response;
return;
}
return startReader();
});
};
关于javascript - WinRT - StreamSocket - 通过 LoadAsync 读取数据时关闭连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14426350/
我正在通过创建一些项目来学习 React Native。 我卡住了,无法加载自定义字体。我关注了this来自世博会文档的指南。但是我收到一个错误 fontFamily "raleway-bold" i
// Asynchronously load and execute a script from a specified URL function loadasync(url) { var head
假设我正在使用线程,它在 Windows::Storage::Streams::DataReader (m_reader) 的帮助下从网络套接字 (Windows::Networking::Socke
我正在尝试通过 WebAPI 调用从 RavenDb 加载文档。当我打开一个异步 IDocumentSession 并调用 LoadAsync 时,我没有得到任何异常或结果,线程立即退出,没有错误代码
当我遇到问题时,我正在我的项目中添加一些异步调用。 Session 和 AsyncSession 之间的相同调用没有返回我的文档。 这里是文档: class Company { string
我有一个程序,用户可以在其中查看保存在 XAML 中的各种 3D 模型,然后使用 TrackballDecorator 操作 Viewport3D。这些 XAML 文件中包含转换,我使用问题 WPF
我正在尝试通过 StreamSocket 发送 HTTP 请求,但响应被 chop 为 “failedWinRTError:对象已关闭。” 这是我的代码: var count, hostName,
我的 Windows Phone 8 应用程序中有以下代码。 //connection code, done during app start socket = new StreamSocket();
我想将数据库中的图像异步加载到图片框中。我该怎么做?现在我有: byte[] byteBLOBData = new byte[0]; byteBLOBData = (byte[])ds.Tables[
我正在将 React Native 与 Expo 结合使用,除了自定义字体的问题之外,一切都很顺利。我的字体 Lobster-Regular.ttf 在 ./assets/fonts 中,并且我一直在
我正在创建一个 Win 8 商店应用程序,我在其中使用 StreamSocket 连接到一个用 Java 编写的服务器。当我在调试中运行应用程序时,在 StreamSocket.ConnectAsyn
我在使用 Windows 8 UI 应用程序时遇到问题。我正在使用客户端-服务器通信,客户端需要一直检查新消息。所以我使用这样的代码,其中 _socket 是一个 StreamSoket: p
import React, { Component } from 'react'; import { View, TextInput, } from 'react-native'; imp
我的应用程序使用 CRNA 和 Expo,我的问题是 Font.loadAsync() 异步函数无法在我的项目目录的 asset/fonts/文件夹中找到 .otf 字体文件。我绝对确定目录和文件名是
我正在使用 C# 在 WinRT 上编写一个客户端应用程序,它通过 TCP 连接到多个服务器。对于 TCP 连接,我使用 StreamSocket。然后将输入和输出字符串包装在 DataWriter
我使用以下代码在 UWP WinRT 上使用 JSON 流: async function connect() { let stream: MSStream; return new C
有没有办法将 PictureBox 绑定(bind)到字符串,以便当字符串发生变化时,它会使用字符串中的 url 调用 LoadAsync() 并加载图像? 目前这是我在自动生成的代码中所拥有的。 t
我有一个 React Native,React 混合应用程序。对于 React Native,我使用的是 react-native-elements。 我的应用程序使用 Expo 运行,并使用 rea
这是react expo项目,使用react-native-form-validation进行验证时出现错误。 0 && errors.fullName} status={errors.fu
这是react expo项目,使用react-native-form-validation进行验证时出现错误。 0 && errors.fullName} status={errors.fu
我是一名优秀的程序员,十分优秀!