我的代码如下:
URLConnection cnx = address.openConnection();
cnx.setAllowUserInteraction(false);
cnx.setDoOutput(true);
cnx.addRequestProperty("User-Agent",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)");
InputStream is = cnx.getInputStream();
Run Code Online (Sandbox Code Playgroud)
如果我在收到之前设置标题是否可以InputStream
?我的标题会被发送,还是服务器会看到默认URLConnection
的用户代理(如果有的话)?
我正在使用URL.openConnection()
从服务器下载的东西.服务器说
Content-Type: text/plain; charset=utf-8
Run Code Online (Sandbox Code Playgroud)
但connection.getContentEncoding()
回报null
.怎么了?
我有一个Applet,它使用URLConnection通过http连接加载图像.我为所有连接设置setUseCaches(true),但仍然没有看到任何缓存行为.我的图像的HTTP标头具有合理的缓存设置.如果你看一下bug 4528599,就会有这个相当神秘的陈述:
Java Plug-In的当前版本(1.3.1)仅检查浏览器缓存中名称以.jar或.class结尾的文件.有人告诉我,对于Java Plug-In 1.4,将检查浏览器缓存的以下文件类型:.class,.jar,.zip,.jpg,.gif,.wav,.au.
当然,这被标记为1.6的固定,但即使在1.6以下,我也看不到任何缓存.我的图像是PNG文件,在某些情况下,实际上并不以.png扩展名结尾.我没有看到任何缓存.
错误修复报告讨论了1.6统一下载引擎,但谷歌似乎并不了解它.
这是应该工作还是只是另一个破碎的太阳"功能".有什么方法或解决方法,我可以让我的applet从浏览器缓存加载PNG图像?我宁愿不实施自己的....
更新:缓存似乎与ResponseCache实现相关联.有关其工作原理的详细信息,请参阅此技术说明.最后一行说:
Java 2 Standard Edition中没有URLConnection缓存的默认实现.但是,Java Plugin和Java WebStart确实提供了一个开箱即用的功能.
所以在我看来问题确实变成了:Java插件ResponseCache实现如何真正起作用?v1.4/v1.5/v.16之间有什么区别
有人有任何想法吗?
我希望为Android应用程序创建一个登录表单.我想使用post方法将信息发送到服务器端,由PHP文件处理它; 然后验证参数并发回响应.
我看一下使用HttpClient和URLConnection的实现,它们非常相似.哪个在Android应用程序中使用效率更高?
谢谢Fabii
我有一个程序javax.xml.ws.Service
用于调用由WSDL定义的远程服务.此程序在Google App Engine上运行,默认情况下,将HTTP连接超时设置为5
秒{1}.我需要增加此超时值,因为此服务通常需要很长时间才能响应,但由于此请求未进行URLConnection
,我无法弄清楚如何调用URLConnection.setReadTimeout(int)
{2}或以其他方式更改超时.
有没有办法在App Engine上全局设置HTTP连接超时?而且,为了分享知识,人们将如何解决这类问题呢?
{1}:https://developers.google.com/appengine/docs/java/urlfetch/overview#Requests
{2}:http://docs.oracle.com/javase/1.5.0/docs/api/java/net/URLConnection.html#setReadTimeout(int)
我正在编写一些代码,通过HTTPS将文件从设备上传到云端.
相关片段:
HttpsURLConnection conn = null;
URL url = new URL(urlstring);
conn = (HttpsURLConnection) url.openConnection(); // exception here.
Run Code Online (Sandbox Code Playgroud)
但演员阵容不会编译:
06-20 15:58:05.311: E/FNF(30286): java.lang.ClassCastException: libcore.net.http.HttpURLConnectionImpl cannot be cast to javax.net.ssl.HttpsURLConnection
Run Code Online (Sandbox Code Playgroud)
我发现了类似的问题:使用java类HttpsURLConnection,但我没有从sun包导入任何东西.
我的进口:
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.URL;
import android.net.Uri;
import javax.net.ssl.HttpsURLConnection;
import android.util.Log;
import edu.mit.media.funf.storage.RemoteFileArchive;
import edu.mit.media.funf.util.LogUtil;
Run Code Online (Sandbox Code Playgroud)
有一段时间我一直在讨论这个问题吗?
这个小代码片段可以在Mac的JVM上正常运行.不幸的是,它在Android 4.2上执行时崩溃了.
import java.net.HttpURLConnection;
import java.net.URL;
public class App
{
public static void main( String... arguments ) throws Exception
{
HttpURLConnection connection = (HttpURLConnection) new URL( "https://github.com" ).openConnection();
connection.setRequestMethod( "HEAD" );
System.out.println( connection.getResponseCode() + "" );
}
}
Run Code Online (Sandbox Code Playgroud)
如果我更换https://github.com
与https://www.facebook.com
它工作正常,但我无法找出原因.
该例外不包含消息; 所以这里至少是堆栈跟踪.
java.io.EOFException
at java.util.zip.GZIPInputStream.readFully(GZIPInputStream.java:206)
at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:98)
at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:81)
at libcore.net.http.HttpEngine.initContentStream(HttpEngine.java:541)
at libcore.net.http.HttpEngine.readResponse(HttpEngine.java:844)
at libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:283)
at libcore.net.http.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:495)
at libcore.net.http.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:134)
Run Code Online (Sandbox Code Playgroud) 相对较新的Java程序员和我已经被教导过你不能创建一个抽象类的实例.我也做了一些研究,我了解到在大多数情况下,当它出现一个抽象类时,它实际上是一个匿名的子类.但这是我遇到的问题:
Java的URL
类有一个openConnection
返回的方法URLConnection
.URLConnection
是一个抽象类,Java文档也将其所有子类列为抽象类......所以我真的迷失了.什么回来了?
我正在用Java解决这个问题.我想从URL获取一些HTML信息.这段代码工作了很长时间,但突然间,它停止了工作.
当我使用浏览器访问此URL时,它会打开没有问题.
代码:
URL site = new URL(this.url);
java.net.URLConnection yc = site.openConnection();
BufferedReader in = new BufferedReader(new InputStreamReader(yc.getInputStream()));
String inputLine;
String objetivo = "<td height=\"28\" colspan=\"2\"";
while ((inputLine = in.readLine()) != null && !inputLine.contains(objetivo)) {
}
inputLine = in.readLine();
Run Code Online (Sandbox Code Playgroud)
例外情况:
java.io.IOException: Server returned HTTP response code: 500 for URL: http://www.myurl.com
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at Sites.websites.Site1.getData(Site1.java:53)
at util.Util.lerArquivo(Util.java:278)
at util.Util.main(Util.java:983)
Run Code Online (Sandbox Code Playgroud)
怎么了?主人挡住了我吗?
请考虑以下代码段:
URLConnection connection = target.openConnection();
connection.setConnectTimeout(5000); // 5 sec
connection.setReadTimeout(10000); // 10 sec
Run Code Online (Sandbox Code Playgroud)
是否connection.setReadTimeout
设置了STARTING读取数据的最大可用时间,还是可用于完成读取数据的最大时间?
我的理解是,java有10秒钟的时间开始从连接中读取下一个数据字节.完成从连接读取所有数据没有超时,因为我们不知道可能有多大.这是对的吗?
urlconnection ×10
java ×9
http ×4
android ×3
abstract ×1
applet ×1
content-type ×1
header ×1
httpclient ×1
https ×1
timeout ×1
wsdl ×1