我想使用http客户端以JSON方式发送文件我不知道如何启动任何人都可以建议我应该做什么?我将发送有关此JSON格式的数据:
{
"Filename": "282850ad-de5c-498f-8280-2d4b6d77b774.jpg",
"ChunkId":1,
"ChunkLength":11397,
"FileLength":11397
}
Run Code Online (Sandbox Code Playgroud)
如你所见,我将以块状发送文件.我不知道我是否要将文件转换为字节数组.如果我需要,任何人都可以给一些示例代码谢谢.
我正在用Django 1.6和Python 3.4编写一个演示代理服务器.当响应具有此标头时,我收到错误:
Transfer-Encoding=chunked
Run Code Online (Sandbox Code Playgroud)
错误是:
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/wsgiref/handlers.py", line 137, in run
self.result = application(self.environ, self.start_response)
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/django/contrib/staticfiles/handlers.py", line 67, in __call__
return self.application(environ, start_response)
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/django/core/handlers/wsgi.py", line 214, in __call__
start_response(force_str(status), response_headers)
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/wsgiref/handlers.py", line 236, in start_response
assert not is_hop_by_hop(name),"Hop-by-hop headers not allowed"
AssertionError: Hop-by-hop headers not allowed
Run Code Online (Sandbox Code Playgroud)
我发现了这个问题:在Django代理中间件中允许逐跳头,但看起来像Django 1.6没有basehttp._hop_headers
.
我运行服务器python3.4 manage.py runserver
.
请帮忙
我发现有时浏览器无法从我的网站上获取cookie,所以我curl
用来检查标题,信息是:
C:\Documents and Settings\jack>curl http://localhost -I
HTTP/1.1 200 OK
Expires: Thu, 01-Jan-1970 00:00:00 GMT
Set-Cookie: SCALAEYE_SESSION="a57cf8ebdfc379da91ad17d1d1eac706c25ae4c3-%3Citems%3E%3C%2Fitems%3E";Path=/
Set-Cookie: SCALAEYE_FLASH="%3Citems%3E%3C%2Fitems%3E";Path=/
Content-Length: 121665
Server: Jetty(6.1.26)
Run Code Online (Sandbox Code Playgroud)
但是当我使用浏览器IE6
并Firefox
访问时,标题是:
Response Headersview source
Date Fri, 08 Apr 2011 08:48:09 GMT
Transfer-Encoding chunked
Server Jetty(6.1.26)
Run Code Online (Sandbox Code Playgroud)
你可以看到没有Set-Cookie
标题,这会产生问题.我的服务器是Jetty 6.1.26
.为什么他们的回答不同?哪里错了?以及如何解决它?
有没有办法打印http块及其到达时间?使用curl 或任何其他可视化工具?有什么快速的方法可以用 javascript 编写这个吗?
我找到了一个名为 chunk scatter http://scatter.cowchimp.com/的工具,但它不适用于 https url。
场景:从Angular7调用API时,我正在调用Node(通过express)并返回字符串类型的分块数据-我想捕获此字符串数据并将其显示为字符串
服务器端: 从Node后端发送的数据是“文本”而不是json ...数据是通过多个res.write('somestring')语句发送的
客户端在Angular中: 我想要一个可观察的对象来处理此数据...
SyntaxError:意外令牌{在JSON.parse()位置12的JSON中
src / app / myS.service.ts(24,54)中的错误:错误TS2322:无法将类型“文本”分配给类型“ json”
我如何从Node JS后端捕获“文本”数据...我在Node中使用npm cors,所以那里没有CORS错误
此处提供演示代码:https : //stackblitz.com/edit/angular-44sess
我的后端在以下代码段中:
app.get('/obs/responseWrite', cors(), function(req, res){
var j=0;
const headers = {
'Content-Type': 'text',
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Methods': 'OPTIONS, POST, GET',
'Access-Control-Max-Age': 2592000, // 30 days
};
res.writeHead(200,headers);
for(var i=0; i<50000; i++){
/* setInterval(function() { res.write("returning j:["+ j + "]. "); j=j+1; if(j>=100){res.end();} }, 1000); */
var myObj = { return …
Run Code Online (Sandbox Code Playgroud)我正在发出 GET 请求并接收 json 或“二进制”数据。根据我的测试,json 响应的机会与抛硬币相差不远。当我收到二进制数据时,我还会收到“Content-Length: xxx”或“Transfer-Encoding: chunked”响应标头(这也或多或少有 50-50 的机会)。我没有注意到同时获取两个标头(如果我在下面的代码片段中为curl 添加 -i 选项)。但是我确实得到了 json 响应的“Content-Length”标头。通常 json 响应的大小为 280kB,而分块响应的大小约为 40kB。
curl -o output.json\
-H "Content-Type: application/json;charset=UTF-8"\
"www.example.com/data"\
&& ./process-output.sh
Run Code Online (Sandbox Code Playgroud)
我想找到一个解决方案,在执行下一个脚本之前,我可以确保整个响应都在“output.json”中。
- 编辑 -
我当前的解决方案是检查输出并重file output.json | grep -c "UTF-8 Unicode"
试(最多 5 次)。大多数人会说这是一个丑陋的解决方法,有些人甚至可能不再和我说话。我希望我不需要使用这样的“解决方案”。
我需要测试服务器并从Fiddler发送一个chunked请求.我需要发送一些非常简单的东西,例如'a'字符作为内容.
有一个Request Builder选项卡,我可以在其中设置Transfer-Encoding:chunked header,但是如何指定Request Body?
golang 的 net/http 包是否支持使用分块传输编码的请求?到目前为止,我已经能够使用 Hijacker 接口(https://golang.org/src/net/http/server.go?s=6173:6875#L156)至少不关闭连接并接收完整的分块请求,但尚未解析块,并怀疑我可能走错了路。
从https://golang.org/src/net/http/httputil/httputil.go?s=688:732#L10,我看到有一个分块阅读器,但似乎供内部使用。
本质上,我试图接受带有“分块”传输编码的 HTTP PUT 并将其发送到后端服务器“即时”(即不缓冲 golang 中的完整请求)。我无法控制上游请求。有没有推荐的方法来处理这样的请求,或者劫机者是这样做的?
我的python版本是3.4,我的tornado版本是4.3。我的代码是这样的:
import tornado.ioloop
import tornado.web
import tornado.httputil
import tornado.httpserver
class MainHandler(tornado.web.RequestHandler):
def get(self):
body = 'foobar'*10
self.set_header('Transfer-Encoding', 'chunked')
self.write(body)
self.flush()
self.finish()
app = tornado.web.Application([
(r'/chunked', MainHandler),
])
if __name__ == "__main__":
app.listen(8080)
tornado.ioloop.IOLoop.current().start()
Run Code Online (Sandbox Code Playgroud)
这根本行不通,客户端只是等待块结束。如何在使用 Tornado 服务器时正确生成分块响应?