Tag: http

如何用Java解析HTTP请求?

实现代理服务器时,我得到一个HTTP请求作为字符串,例如: GET http:// localhost:54321 / x HTTP / 1.1 主持人:localhost:54321 缓存控制:无缓存 是否有内置类来解析此请求?

url.getFile()和getpath()之间有什么区别?

在java.net.url有一个getFile()方法和一个getPath()方法。 在我的测试中,它们都返回相同的结果:域名尾随斜杠后的完整路径和文件。 例如, http://www.google.com/x/y/z.html返回两种方法的x/y/z.html 。 有人可以详细说明Javadocs吗?

如何在Android中使用DefaultHttpClient创建持久性Cookie?

我正在使用 // this is a DefaultHttpClient List cookies = this.getCookieStore().getCookies(); 现在,由于Cookie没有实现序列化,我无法序列化该List。 编辑:(指定我的目标,不仅是问题) 我的目标是将DefaultHttpClient与持久性cookie一起使用。 有经验的人可以带领我走上正轨吗? 可能还有另一种我没有发现的最佳实践……

为什么要使用websocket,使用它有什么好处?

我试过阅读一些文章,但在这个主题上并不那么清楚。 有人想在下面解释我的观点: 为什么在http上使用websocket 什么是全双工通信 低延迟交互是什么意思? 任何forms的帮助表示赞赏。

我正在尝试使用Java的HttpURLConnection来执行“条件获取”,但我从未获得304状态代码

这是我的代码: final HttpURLConnection conn = (HttpURLConnection) sourceURL.openConnection(); if (cachedPage != null) { if (cachedPage.eTag != null) { conn.setRequestProperty(“If-None-Match”, cachedPage.eTag); } conn.setIfModifiedSince(cachedPage.pageLastModified); } conn.connect(); if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) { newCachedPage.eTag = conn.getHeaderField(“ETag”); newCachedPage.pageLastModified = conn.getHeaderFieldDate(“Last-Modified”, 0); } else if (conn.getResponseCode() == HttpURLConnection.HTTP_NOT_MODIFIED) { // Never reaches here } 我似乎永远不会得到HTTP_NOT_MODIFIED响应代码,甚至连续几次点击同一个服务器 – 页面肯定没有变化。 此外,conn.getHeaderField(“ETag”)似乎总是响应null,有时conn.getHeaderFieldDate(“Last-Modified”,0)返回0.我已经尝试过针对各种Web服务器。 谁能告诉我我做错了什么?

来自java的multipart文件上传发布请求

我正在尝试制作一个程序,将图像上传到接受多部分文件上传的网络服务器。 更具体地说,我想向http://iqs.me发出http POST请求,该请求在变量“pic”中发送文件。 我做了很多尝试,但我不知道我是否已经接近了。 最难的部分似乎是获取HttpURLConnection来发出POST类型的请求。 我得到的响应看起来像是一个GET。 (我想在没有任何第三方库的情况下这样做) 更新:非工作代码在这里(没有错误,但似乎没有POST): HttpURLConnection conn = null; BufferedReader br = null; DataOutputStream dos = null; DataInputStream inStream = null; InputStream is = null; OutputStream os = null; boolean ret = false; String StrMessage = “”; String exsistingFileName = “myScreenShot.png”; String lineEnd = “\r\n”; String twoHyphens = “–“; String boundary = […]

将邮件发送到Gmail帐户

我正在从我的Java应用程序向Gmail帐户发送邮件。 我使用过Java Mail API并且运行正常。 但是可以在不使用java中的邮件API的情况下发送电子邮件吗? 我的意思是只使用套接字: public class Main { public static void main(String[] args) throws Exception { String host = “smtp.gmail.com”; int port = 465; String from = “sh2rpzain@gmail.com”; String toAddr = “sharpzian@gmail.com”; Socket servSocket = new Socket(host, port); DataOutputStream os = new DataOutputStream(servSocket.getOutputStream()); DataInputStream is = new DataInputStream(servSocket.getInputStream()); if (servSocket != null && […]

在Java中分块的http解码?

我正在解码http数据包。 我遇到了一个问题,就是问题。 当我得到一个http数据包时,它有一个标题和正文。 当transefer编码被分块时我不知道该怎么办? 是否有一个有用的API或类来解除JAVA中的数据? 如果有人,经验丰富的http解码,请告诉我如何做到这一点?

java.io.IOException:服务器返回HTTP响应代码505

我在我的代码中有基于HTML的查询,一个特定的类似乎在从服务器收到505响应时引起IOExceptions 。 我和其他似乎有类似问题的人一起查看了505的反应。 显然505表示HTTP版本不匹配,但是当我将相同的查询URL复制到任何浏览器(尝试过firefox,seamonkey和Opera)时,似乎没有问题。 我读过的其中一篇post表明浏览器可能会自动处理版本不匹配问题。 我试图通过使用Opera附带的漂亮的开发人员工具深入挖掘,看起来版本中没有不匹配(我相信Java使用HTTP 1.1)并且收到了一个不错的200 OK响应。 当同一查询通过我的Java代码时,为什么会遇到问题? private InputStream openURL(String urlName) throws IOException{ URL url = new URL(urlName); URLConnection urlConnection = url.openConnection(); return urlConnection.getInputStream(); } 示例链接: http://www.uniprot.org/uniprot/?query=mnemonic%3aNUGM_HUMAN&format=tab&columns=id,entry%20name,reviewed,organism,length : http://www.uniprot.org/uniprot/?query=mnemonic%3aNUGM_HUMAN&format=tab&columns=id,entry%20name,reviewed,organism,length mysmonic%3AaNUGM_HUMAN& http://www.uniprot.org/uniprot/?query=mnemonic%3aNUGM_HUMAN&format=tab&columns=id,entry%20name,reviewed,organism,length tab&column = http://www.uniprot.org/uniprot/?query=mnemonic%3aNUGM_HUMAN&format=tab&columns=id,entry%20name,reviewed,organism,length

getRequestProperty(“Authorization”)始终返回null

我正在尝试读取HTTP请求的授权标头(因为我需要向其添加内容),但我总是为标头值获取null。 其他标题工作正常。 public void testAuth() throws MalformedURLException, IOException{ URLConnection request = new URL(“http://google.com”).openConnection(); request.setRequestProperty(“Authorization”, “MyHeader”); request.setRequestProperty(“Stackoverflow”, “anotherHeader”); // works fine assertEquals(“anotherHeader”, request.getRequestProperty(“Stackoverflow”)); // Auth header returns null assertEquals(“MyHeader”, request.getRequestProperty(“Authorization”)); } 难道我做错了什么? 这是一个“安全”function吗? 有没有办法使这个工作与URLConnection,或者我是否需要使用另一个HTTP客户端库?