Tag: urlfetch

用于POST请求的HttpURLConnection App Engine Java示例不起作用

我正在尝试在app引擎应用程序下使用urlfetch执行POST请求。 我已按照“使用HttpURLConnection”部分下的App Engine文档(此处为https://developers.google.com/appengine/docs/java/urlfetch/usingjavanet )中的简单示例提取的说明(和代码)进行了操作。 。 import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.net.URLEncoder; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; import java.io.OutputStreamWriter; String message = URLEncoder.encode(“my message”, “UTF-8”); try { URL url = new URL(“http://httpbin.org/post”); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setDoOutput(true); connection.setRequestMethod(“POST”); OutputStreamWriter writer = new OutputStreamWriter(connection.getOutputStream()); writer.write(“message=” + message); writer.close(); if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) { […]

Google App Engine(Java):URL获取响应过大的问题

我正在尝试在谷歌应用程序上构建某种web服务。 现在问题是,我需要从网站获取数据(HTML Scraping)。 请求如下: URL url = new URL(p_url); con = (HttpURLConnection) url.openConnection(); InputStreamReader in = new InputStreamReader(con.getInputStream()); BufferedReader reader = new BufferedReader(in); String result = “”; String line = “”; while((line = reader.readLine()) != null) { System.out.println(line); } return result; 现在,App Engine在第3行给出了以下例外情况: com.google.appengine.api.urlfetch.ResponseTooLargeException 这是因为最大请求限制为1mb,页面的总HTML大约为1.5mb。 现在我的问题是:我只需要html的前20行来刮。 有没有办法只获取HTML的一部分,以便不会抛出ResponseTooLargeException? 提前致谢!

在Google App Engine Java应用程序中加载自定义密钥库

我想使用URLFetch服务在Google App Engine应用中打开HTTPS连接。 为了能够validation我的应用正在与之交谈的服务器的SSL证书,我使用自己的密钥库文件 。 我想在我的应用程序加载时,即在执行任何HTTPS请求之前,在预热请求中读取此文件。 密钥库文件是我的WAR文件的一部分。 TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType()); keystore.load(ClassLoader.getSystemResourceAsStream(“myKeystoreFile”), “password”.toCharArray()); trustManagerFactory.init(keystore); TrustManager[] trustManagers = trustManagerFactory.getTrustManagers(); SSLContext sslContext = SSLContext.getInstance(“SSL”); sslContext.init(null, trustManagers, null); HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.getSocketFactory()); 但是,我不能使用这种方法,因为虽然HttpURLConnection在GAE的JRE白名单上,但HttpsUrlConnection不是。 还有另一种在GAE中使用自定义密钥库的方法吗? 我在GAE文档中没有找到任何相关信息。 看起来Google的URLFetch服务支持HTTPS时,无法自定义密钥库。 它是否正确? 如果这是不可能的,那么这种方法一般是否仍然有效? 或者是否有一种不同的方法仍然允许我validationSSL证书? UPDATE 2009年,谷歌的App Engine开发者Nick Johnson在https://groups.google.com/d/topic/google-appengine-python/C9RSDGeIraE/discussion上说: urlfetch API不允许您指定自己的客户端证书,因此很遗憾您目前无法实现所需的目标。 这还是正确的吗? 如果App Engine中的每个HTTP(s)请求都依赖于URLFetch,这意味着GAE中根本无法使用自定义证书。