当我通过套接字发送正常的HTTP请求时,服务器不响应OK响应.我从FireFox复制了HTTP标头.这是代码:
Socket s = new Socket(InetAddress.getByName("stackoverflow.com"), 80);
PrintWriter pw = new PrintWriter(s.getOutputStream());
pw.print("GET / HTTP/1.1");
pw.print("Host: stackoverflow.com");
pw.flush();
BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
String t;
while((t = br.readLine()) != null) System.out.println(t);
br.close();
Run Code Online (Sandbox Code Playgroud)
但是,这是我收到的回复:
HTTP/1.0 408 Request Time-out
Cache-Control: no-cache
Connection: close
Content-Type: text/html
<html><body><h1>408 Request Time-out</h1>
Your browser didn't send a complete request in time.
</body></html>
Run Code Online (Sandbox Code Playgroud)
我知道我可以通过使用URL.openStream(),但为什么服务器在我手动发送时不识别HTTP请求?
好的,所以我有一个index.php文件,它必须处理许多不同的文件类型.我怎么猜测基于的文件类型REQUEST_URI.
如果我请求http://site/image.jpg,并且所有请求都通过index.php重定向,这看起来像这样
<?php
include('/www/site'.$_SERVER['REQUEST_URI']);
?>
Run Code Online (Sandbox Code Playgroud)
我该如何正确地完成这项工作?
我应该根据所请求文件的扩展名进行测试,还是有办法获取文件类型?
假设我发出一个HTTP请求:foosite.com但实际发送请求的端口是6103,我不要将该端口放在Host标头中,例如:
GET /barpage HTTP/1.1
Host: foosite.com
Method: GET
Run Code Online (Sandbox Code Playgroud)
应该http服务器然后识别我正试图在端口6103上与它通话?或者因为它在请求标题中被省略了我在赌博,如果服务器实际上认识到这一点?
我问这个问题:我发现浏览器,至少是firefox + chrome,把端口放在Host头部.但我正在使用的Java应用程序没有.当端口没有通过时,Host服务器会回复以为我在端口80上.所以我需要獾?服务器操作员还是Java程序员?
更新#1
下面发布的内容是让它输出文件.它正在做的是输出字符串数据,然后输出其余的表单HTML.有没有办法阻止放入文件的内容以及刚刚显示给浏览器的内容.
更新#2
刚添加exit(),一切正常.谢谢!
EOU
嗨,
我一直在环顾四周,看到一些类似的东西,但并没有完全掌握我需要做些什么才能完全完成任务.
目前我有一个用户提供一些细节的表单.在提交时,它会回发给自己并处理POST变量.我有一个预制的HTML网页模板,用于放置信息,工作正常和花花公子只是做一个str_replace.
我现在要做的是将其作为下载导出到纯文本文档中的用户.因此,最终结果是用户单击表单上的提交,然后打开下载弹出窗口,将修改后的网页作为.txt文件.
据我所知,我需要使用HTTPs头功能做一些事情.究竟要实现我想要的东西我不确定.我只希望文件可用一次,但我认为它必须存储在某个地方,供用户下载,然后需要在手动后进行清理?
任何帮助或积分都会很棒!谢谢.
在http://www.a.com/service.asmx上创建Web服务,并从http://www.b.com向其发送跨域ajax请求.检查Firebug中的标头,或Live HTTP标头或您希望的任何其他插件.
请求标头中没有X-Requested-With HTTP标头字段的跟踪.
但是,如果您从同一域(例如http://www.a.com/about)向同一服务发送ajax请求,您将看到该头字段.
为什么跨域ajax请求省略了X-Requested-With头字段?
更新:我知道JSONP调用本质上不是AJAX调用.因此,在JSONP调用中,您将看不到任何X-Requested-With标头字段.
我正在努力使用Postman Chrome扩展程序创建POST多部分/混合请求
这是我的卷曲请求什么效果很好
curl -H "Content-Type: multipart/mixed"
-F "metadata=@simple_json.json; type=application/json "
-F "content=@1.jpg; type=image/jpg" -X POST http://my/api/item -i -v
Run Code Online (Sandbox Code Playgroud)
有趣的回应部分
内容长度:41557
期待:100-继续
内容类型:multipart/mixed; 边界= ---------------------------- 8aaca457e117
- 额外的东西不精细transfer.c:1037:0 0
- 具有持久连接的HTTP 1.1或更高版本,支持流水线操作
当我使用Postman时

我得到了这样的回应
{"message":"Could not parse multipart servlet request;
nested exception is org.apache.commons.fileupload.FileUploadException:
the request was rejected because no multipart boundary was
found","type":"error","status":500,"requestId":"1861eloo6fpio"}
Run Code Online (Sandbox Code Playgroud)
就是这样 - 我希望摆脱那个错误.如果需要更多信息请问:)
我试图了解更多Transfer-Encoding:chunked.在PHP中引用了一些文章:http:
//zoompf.com/blog/2012/05/too-chunky和"Transfer-Encoding:chunked"标题.
我仍然没有得到非常清晰的画面.我知道设置此编码允许服务器将块中的内容设置为浏览器,并在使网站响应的同时导致部分内容呈现.
如果我在IBM WAS上托管了一个提供动态内容的Web应用程序(例如:基于JSF的Web应用程序),那么大多数Web页面都设计为服务器丰富的静态内容,包含大量的CSS和JS文件+动态内容.如何为我的页面设置transfer-encoding'chunked'?或者换句话说:
'Transfer-Encoding: chunked'以及如何为该页面设置该页面?您的个人经历对我的理解肯定是有价值的.
如何使用HTTparty在post方法中传递查询参数和头文件.我正在做如下但它抛出
query = {:method => "neworder", :nonce => 1404996028, :order_type => "buy", :quantity=>1,:rate=>1}
headers = {:key=> "87819747209090199871234", :sign=> "0a3888ac7f8e411ad73a0a503c55db70a291rsf34bfb9f9a47147d5200882674f717f6ede475669f3453"}
HTTParty.post("https://www.acb.com/api/v2/market/LTC_BTC/", :query => query, :headers => headers )
Run Code Online (Sandbox Code Playgroud)
但它会引发以下错误.如何使用HTTparty处理查询字符串参数和标头.
/home/user/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/net/http/header.rb:172:in `capitalize': undefined method `split' for :key:Symbol (NoMethodError)
from /home/user/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/net/http/header.rb:165:in `block in each_capitalized'
from /home/user/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/net/http/header.rb:164:in `each'
from /home/user/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/net/http/header.rb:164:in `each_capitalized'
Run Code Online (Sandbox Code Playgroud) 我需要测试一些与客户端的HTTP交互,而不是修改.我需要测试的是当客户端的请求包含某个静态头时服务器的行为.
我认为运行此测试的最简单方法是设置一个HTTP代理,在每个请求上插入标头.设置它的最简单方法是什么?
在HTTP中,您可以在请求中指定您的客户端可以使用accept标头接受响应中的特定内容,其值为application/xml.内容类型规范允许您在内容类型中包含参数,例如charset=utf-8,表示您可以接受具有指定字符集的内容.
还有accept-charset标题,它指定客户端接受的字符编码.
如果指定了两个标头,并且accept标头包含带有charset参数的内容类型,那么服务器应该将其视为高级标头?
例如:
Accept: application/xml; q=1,
text/plain; charset=ISO-8859-1; q=0.8
Accept-Charset: UTF-8
Run Code Online (Sandbox Code Playgroud)
我已经使用Fiddler向各种服务器发送了一些示例请求来测试它们的响应方式:
例子
W3
请求
GET http://www.w3.org/ HTTP/1.1
Host: www.w3.org
Accept: text/html;charset=UTF-8
Accept-Charset: ISO-8859-1
Run Code Online (Sandbox Code Playgroud)
响应
Content-Type: text/html; charset=utf-8
Run Code Online (Sandbox Code Playgroud)
谷歌
请求
GET http://www.google.co.uk/ HTTP/1.1
Host: www.google.co.uk
Accept: text/html;charset=UTF-8
Accept-Charset: ISO-8859-1
Run Code Online (Sandbox Code Playgroud)
响应
Content-Type: text/html; charset=ISO-8859-1
Run Code Online (Sandbox Code Playgroud)
堆栈溢出
请求
GET http://stackoverflow.com/ HTTP/1.1
Host: stackoverflow.com
Accept: text/html;charset=UTF-8
Accept-Charset: ISO-8859-1
Run Code Online (Sandbox Code Playgroud)
响应
Content-Type: text/html; charset=utf-8
Run Code Online (Sandbox Code Playgroud)
微软
请求
GET http://www.microsoft.com/ HTTP/1.1
Host: www.microsoft.com
Accept: text/html;charset=UTF-8
Accept-Charset: ISO-8859-1 …Run Code Online (Sandbox Code Playgroud) http-headers ×10
http ×4
php ×2
ajax ×1
apache ×1
content-type ×1
cors ×1
cross-domain ×1
curl ×1
filesystems ×1
http-request ×1
httparty ×1
java ×1
postman ×1
proxy ×1
proxypass ×1
ruby ×1
sockets ×1
tomcat ×1
websphere ×1