- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
最近,Windows Phone 8.1 Silverlight 应用程序中使用 HttpClient
访问第 3 方 REST API 的部分代码停止工作。我收到以下错误:
A first chance exception of type 'System.Exception' occurred in mscorlib.ni.dll
Additional information: Catastrophic failure (Exception from HRESULT: 0x8000FFFF (E_UNEXPECTED))
在 Windows Phone (Silverlight) 和 Store (RT) 应用程序中尝试此操作后,我在 WPF 中重写了相同的代码,最后得到了一条有用的错误消息:
The server committed a protocol violation. Section=ResponseHeader Detail=CR must be followed by LF"
还有一个great in-depth blog post关于这个问题。
Microsoft 已声明他们 will not fix/allow this所以我要么被迫找到一个允许不安全 header 的第 3 方 HTTP 库,要么自己编写。
我该如何解决这个问题?如果我从头开始编写自己的库,应该考虑哪些合适的类?有相关的示例代码吗?
(这个问题可能与 this one 太相似了,虽然在编写了一些测试代码之后,使用自定义处理程序和 HttpClient
的想法也不起作用,因为 system handler is called first 响应。 )
最佳答案
事实证明,您可以相当轻松地实现基本的 HTTP 客户端。忽略错误处理和处理 Content-Length
(稍后会详细介绍),这段代码应该可以解决问题。
var hostname = new HostName("www.w3.org");
var socket = new StreamSocket();
await socket.ConnectAsync(hostname, "80");
var request = "GET /Protocols/rfc2616/rfc2616-sec4.html HTTP/1.1\r\n" +
"Host: www.w3.org\r\n" +
"\r\n";
var writer = new DataWriter(socket.OutputStream);
writer.WriteString(request);
await writer.StoreAsync();
var reader = new DataReader(socket.InputStream);
reader.InputStreamOptions = InputStreamOptions.Partial;
string data = string.Empty;
var cts = new CancellationTokenSource();
bool doneReading = false;
uint bytesToRead = 10240;
while (!doneReading)
{
try
{
cts.CancelAfter(10 * 1000);
await reader.LoadAsync(bytesToRead).AsTask(cts.Token);
data += reader.ReadString(reader.UnconsumedBufferLength);
totalBytesRead += bytesRead;
}
catch (TaskCanceledException)
{
doneReading = true;
}
}
socket.Dispose();
肯定有一些问题需要解决:
Content-Length
并请求适当的字节数。当然,因为 TCP is a stream这也需要一些工作。此外,此解决方案主要针对 Windows Phone 8.1 Silverlight。尽管它也适用于 Windows Phone 8.1/Windows Store(即 WinRT)应用程序,但在该平台上使用 MessageWebSocket
可能更容易。
我就此写了一个由三部分组成的系列文章,因为它似乎是一个相当普遍的问题; part two 中讨论了此解决方法.还需要注意的是,错误消息 CR must be followed by LF
may not be completely accurate -- 这也可能意味着 header 中存在无效字符(包括其中一个 header 名称中的空格)。
关于c# - 如何在 Windows Phone/Store 应用程序中接受 "unsafe"HTTP 响应 header ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25209693/
已结束。此问题不符合 Stack Overflow guidelines .它目前不接受答案。 我们不允许提出有关书籍、工具、软件库等方面的建议的问题。您可以编辑问题,以便用事实和引用来回答它。 关闭
在我正在开发的 crate 中,我有几个 unsafe 函数,由于某些原因它们被标记为 explained in this answer .在 unsafe 函数中,我可以执行 unsafe 操作,就
我一直在尝试在我的网络应用程序中设置文本编辑器。在哪里访问文本编辑器我必须允许 script-src 'self' 'unsafe-inline' 'unsafe-eval' 和 style-src
我是后端开发人员,正在帮助前端团队部署 Web 服务器,同时我正在研究遇到内容安全策略的漏洞,如果我将 CSP header 设置为“内容安全策略:默认源代码‘自我’数据: {own_domain_1
Unsafe.putAddress(long address, long x) 之间有什么区别?方法和Unsafe.putLong(long address, long x)方法? 最佳答案 Java
考虑以下代码: const defaultState = () => { return { profile: { id: '', displayName: '',
上面有一条评论 public native void unpark(对象线程); “取消阻塞在park上阻塞的给定线程,或者,如果它没有阻塞,则导致后续对park的调用不阻塞。注意:此操作“不安全”,
我已将 unsafe.cpp 和 Unsafe.java 克隆到自定义版本。我要构建新的 JVM,但似乎我的 UnsafeNew.java 内联了 unsafe.cpp 方法,而不是新的 unsafe
为什么会出现以下错误? Unsafe code may only appear if compiling with /unsafe"? 我使用 C# 和 Visual Studio 2008 在 Wi
我正在用 C# 做一个项目,它可以从线性代数包中获益。我看过外面的那些,但我真的不想付钱,或者我发现它们不是很好。所以我决定自己写。 我读到 C++ 数组比 C# 数组快得多,但在 C# 中使用指针数
在 Java 中,java.lang.unsafe 包中有 Unsafe 类,它提供对操作的低级访问。 现在在我看来,JVM 需要支持Unsafe 类中可用的所有 方法,以便与 JLS 兼容,示例方法
我正在尝试将选项卡存储在本地存储中并在刷新页面上获取前面的选项卡,数据存储在本地但是在控制台上的时候我得到错误 Error: [$sce:unsafe] Attempting to use an un
导入类型化函数时,我收到 no-unsafe-call 和 no-unsafe-assignment eslint 错误。如果函数在同一个文件中声明,错误就会消失。 eslint 似乎无法获取导入函数
我正在尝试在 Visual Studio App Center 中构建 Xamarin iOS 应用程序。该解决方案包含两个项目。一个是 Xamarin iOS 项目。另一个是绑定(bind)库项目。
Unsafe Fileupload 1.client check 标题叫客户端check,文件校验应该是在客户端进行的。 可以先把一句话木马改成图片格式,然后再抓包修改回PHP格式。 一句话木马内容:
我想问一下第一个例子是否比第二个例子慢。 例子1:for, unsafe, unsafe, unsafe, etc for (var i = 0; i ' { } // end of class .
我尝试通过在 Controller 中生成链接将书签按钮添加到我的网站。 模板部分: + Add Controller 部分: $scope.getCode = fun
我注意到在 Java 7 中,集合类(在我的例子中是 ConcurrentLinkedQueue)使用 UNSAFE 类进行交换和查找操作。 偏移量似乎是在编译时声明中计算的: itemOffset
我有一张图片: 在 html 上我得到的结果是: unsafe:c:/var/vci/images/fleetImages/IMG_20150912_091552.jpg 我已经在app.js中添加
这是实现原生pinvok代码的类 虽然我无法验证它是否正确使用了 unsafe,但它似乎可以工作 不安全的签名 struct IO_COUNTERS { public
我是一名优秀的程序员,十分优秀!