Tag: http

HttpClientBuilder – java.lang.NoSuchFieldError:INSTANCE

我有一个Maven Java项目,它使用HttpClient来执行HTTP请求。 在我的本地Java Web Server上,一切正常。 但在我将其部署到SAP Hana Cloud Platform后,我收到以下错误: java.lang.NoSuchFieldError: INSTANCE at org.apache.http.impl.io.DefaultHttpRequestWriterFactory.(DefaultHttpRequestWriterFactory.java:52) at org.apache.http.impl.io.DefaultHttpRequestWriterFactory.(DefaultHttpRequestWriterFactory.java:56) at org.apache.http.impl.io.DefaultHttpRequestWriterFactory.(DefaultHttpRequestWriterFactory.java:46) at org.apache.http.impl.conn.ManagedHttpClientConnectionFactory.(ManagedHttpClientConnectionFactory.java:72) at org.apache.http.impl.conn.ManagedHttpClientConnectionFactory.(ManagedHttpClientConnectionFactory.java:84) at org.apache.http.impl.conn.ManagedHttpClientConnectionFactory.(ManagedHttpClientConnectionFactory.java:59) at org.apache.http.impl.conn.PoolingHttpClientConnectionManager$InternalConnectionFactory.(PoolingHttpClientConnectionManager.java:493) at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.(PoolingHttpClientConnectionManager.java:149) at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.(PoolingHttpClientConnectionManager.java:138) at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.(PoolingHttpClientConnectionManager.java:114) at org.apache.http.impl.client.HttpClientBuilder.build(HttpClientBuilder.java:726) at com.sap.hana.cloud.odata.service.OlingoSampleApp.getHttpclient(OlingoSampleApp.java:382) at com.sap.hana.cloud.odata.service.OlingoSampleApp.getCsrfToken(OlingoSampleApp.java:374) at com.sap.hana.cloud.odata.service.ODataCalls.doGet(ODataCalls.java:163) … 我的依赖关系如下: org.apache.httpcomponents httpclient 4.3.5 compile 根据这个问题来自Java应用程序中的Mashape Unirest的java.lang.NoSuchFieldError:org.apache.http.message.BasicLineFormatter.INSTANCE我尝试使用以下代码来获取ClassLoader Ressource。 ClassLoader classLoader = this.getClass().getClassLoader(); URL resource = […]

HttpResponse代码302

我正在使用模拟器BB 8900.我正在尝试连接到url并获得响应代码302.这是什么意思? 这是我的代码片段: import javax.microedition.io.Connector; import javax.microedition.io.HttpConnection; ….. connection = (HttpConnection)Connector.open(url); responseCode = connection.getResponseCode();

如何在服务器端将HTTP POST请求主体作为Java String?

HttpExchange对象的getRequestBody方法返回一个InputStream。 正确阅读“身体”还有很多工作要做。 它是一个Java库+对象+方法又领先一步并将身体(在服务器端)作为即用型Java字符串返回? 谢谢!

使用非常规方案获取重定向请求的最终URL

我的代码(下面)尝试从服务器返回的最终URL进行一些重定向。 只要URL具有http方案,它就可以正常工作。 当我想要返回具有不同方案的URL时,我的问题出现了。 最终,我希望在某些情况下返回market:// url或其他应用程序启动方案,因为这是针对Android的,我想要与它们一起启动Intent。 所以这让我得到了最终的http url,但是当最终的url是market://它会抛出看到的exception(java.lang.IllegalStateException:Scheme’market’未注册),然后getURI不提供那个,它会提供之前的任何东西。 DefaultHttpClient client = new DefaultHttpClient(); HttpContext httpContext = new BasicHttpContext(); HttpGet httpGet = new HttpGet(mInitialUrl); try { client.execute(httpGet, httpContext); } catch (IllegalStateException e) { e.printStackTrace(); } // Parse out the final uri. HttpHost currentHost = (HttpHost) httpContext.getAttribute(ExecutionContext.HTTP_TARGET_HOST); HttpUriRequest req = (HttpUriRequest) httpContext.getAttribute(ExecutionContext.HTTP_REQUEST); return (req.getURI().isAbsolute()) ? req.getURI().toString() : (currentHost.toURI() […]

用于在Java Play中测试的HTTP上下文! 2.0.2

我们正在尝试为视图编写测试,但其中一些需要会话变量才能正确呈现。 这是标准测试的样子: @Test public void indexTest() { running(fakeApplication(), new Runnable() { public void run() { Content html = views.html.index.render(loginForm); assertThat(contentType(html)).isEqualTo(“text/html”); assertThat(contentAsString(html)).contains(“log in”); } }); } loginForm是我们在测试类中声明的模拟表单。 但是,当我们尝试运行此测试时,我们会收到以下错误: ‘这里没有可用的HTTP上下文’ 我们尝试使用testServer并尝试从请求到该服务器获取http上下文,但无济于事。 谢谢 :-) 编辑 @nico_ekito 这是我的loginForm周围的代码: Form loginForm = Controller.form(Login.class); 但是,我认为问题在于被调用的控制器,因为视图不使用任何会话属性。 然而,authenticate()方法(在控制器中,我相信当表单提交到视图时)会使用会话。

升级到Jetty 9.3后的标头解析错误

当我将docker发行版从9.2更改为9.3时,我遇到了问题。 在9.2下我的应用程序完美无缺,但是当运行相同的war文件并从同一客户端连接时,我在9.3下运行时收到以下错误消息: 015-08-30 14:55:32.174:WARN:oejh.HttpParser:qtp1100439041-12: Illegal character 0x20 in state=HEADER_IN_NAME for buffer HeapByteBuffer@26dab36[p=62,l=654,c=8192,r=592]={POST /api/v1/time…0.1:8080\r\nKey <<>>\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00…\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00} 2015-08-30 14:55:32.175:WARN:oejh.HttpParser:qtp1100439041-12: bad HTTP parsed: 400 Illegal character 0x20 for HttpChannelOverHttp@6765bf81{r=0,c=false,a=IDLE,uri=-} 根据我的理解,标题中有一个非法字符,但为什么一个版本抛出此错误而另一个版本没有? 我也使用Apache httpclient 4.4.1发送数据。

如何使用Http客户端在java中传递查询参数

我使用给定的代码在java中使用GET REST调用,但我收到错误代码:404即找不到。 但是当我在浏览器中使用相同的URL时,我得到了输出,它工作正常。我是JAVA的新手。 可能是我错误地传递了查询参数,但我没有得到它。 我在NETBEANS 7.1.2工作。 请帮忙。 import java.io.IOException; import java.io.OutputStreamWriter; import java.net.HttpURLConnection; import java.net.URL; public class Test { private static String ENDPOINT =”http://wisekar.iitd.ernet.in/active/api_resources.php/method/mynode?”; public static void main(String[] args) throws IOException { URL url = new URL(ENDPOINT + “key=” + “mykey” ); HttpURLConnection httpCon = (HttpURLConnection) url.openConnection(); httpCon.setDoOutput(true); httpCon.setRequestMethod(“GET”); OutputStreamWriter out = new OutputStreamWriter( httpCon.getOutputStream()); […]

套接字关闭问题 – 最后一部分数据丢失

我有一个Java程序接受连接,接收HTTP请求并发送HTTP回复和一些存储在文件中的数据(这是缓存代理的一部分)。 删除所有不相关的内容,我的代码如下所示: FileInputStream fileInputStream = new FileInputStream(file); OutputStream outputStream = socket.getOutputStream(); byte[] buf = new byte[BUFFER_SIZE]; int len = 0; while ((len = fileInputStream.read(buf)) > 0) { outputStream.write(buf, 0, len); } outputStream.flush(); socket.close(); 此代码在每个连接的客户端的特定线程中执行。 当我处理小文件(.htm,.gif,.swf等)时,一切正常(但是,我没有看到浏览器中的任何错误)。 但是当我下载大文件(.iso),特别是同时下载几个文件时,当系统处于负载状态时,有时我会得到非常奇怪的行为。 浏览器下载99.99%的文件,当下载的字节少于BUFFER_SIZE时,下载会停止几秒钟,然后浏览器会说错误已经发生。 我无法理解会发生什么,因为所有数据都已成功读取,甚至所有数据都成功写入outputStream。 正如你所看到的,我甚至做了flush(),但它没有结果。 有谁能解释一下会发生什么? 编辑 将项目上传到filehosting.org。 下载源文件 。 有zip源存档,包含源代码,Build.xml和Readme.txt。 使用ant构建解决方案。 在ClientManager.java中发生了所描述的问题,您可以在那里找到评论。

获取响应获取或发布请求的响应字符集

我正在java web应用程序中提取响应字符集,我正在使用Apache HTTP Client。 例如,从“Content-Type”标题获得的一个可能值是 text/html; charset=UTF-8 然后我的代码将在“=”符号后提取所有文本… 所以提取的字符集将是 UTF-8 我只是想知道,上面获取响应字符集的方法是否正确? 或者是否存在上述代码不起作用的情况? 这里有什么我想念的吗?

使用序列化将对象传递给另一个JVM – 相同的Java版本和jar(都运行我们的应用程序)

更新:现在使用地图。 想要向其他实例发送内容的类发送对象即路由字符串。 使用对象流,使用Java serializable将对象写入servlet。 先写字符串然后再写对象。 接收servlet将输入流包装在ObjectInputStream周围。 首先读取字符串然后读取Object。 路由字符串决定它去了。 更通用的方法可能是发送类名及其声明的方法或Spring bean名称,但这对我们来说已经足够了。 原始问题 了解基本方法,但需要步骤的详细信息。 还知道我可以使用Jaxb或RMI或EJB …但是想使用纯序列化到bytearray然后进行编码,将它从jvm 1中的servlet 1发送到jvm 2中的servlet 2(同一个中的两个app server实例)局域网,在两个J2EE应用程序中设置相同的Java版本和jar) 基本步骤是(Approcah 1): – 将任何Serializable对象序列化为字节数组并生成一个字符串。 确切的代码见下文 Base64输出1.是否需要基于64或可以跳过第2步? 使用java.util.URLEncode.encode对字符串进行编码 命名参数后,使用apache http组件或URL类从servlet 1发送到2 在Servlet 2 J2EE框架上已经有URLDecoced它,现在只需执行反向步骤并根据param名称转换为对象。 既然两者都是我们的应用程序,我们就会知道类型/类映射的param名称。 基本上寻找在JVM之间发送对象的最快和最方便的方法。 示例:要发送的POJO类 package tst.ser; import java.io.Serializable; public class Bean1 implements Serializable { /** * make it 2 if add something without default […]