2013-10-29 130 views
0

我目前在我的应用程序中运行一个码头web服务器。其中一个客户使用HttpPost来调用我的这个。绝对URL .. 400坏请求

有时会起作用,有时会得到HTTP 400 BAD请求。

这些日志

About to connect() to 10.184.209.142 port 8080 
Trying 10.184.209.142... 
Connected to 10.184.209.142 (10.184.209.142) port 8080 
POST /CSCIntegration HTTP/1.1 
User-Agent: CSC Test 
Host: 10.184.209.142:8080 
Accept: */* 
From: [email protected] 
Connection: close 
Content-Type: text/xml; charset=utf-8 
Content-Length: 440 

如果我使用的是Junit的我看不出有任何问题,运行相同。

是否因为HttpPost中丢失的斜线? 此错误是否由于jetty issue

回答

0

是否因为HttpPost中丢失的斜线?这是由于码头问题导致的错误?

可能。这取决于两件事情:

  • 无论您使用的旧版本的Jetty没有修复该问题。如果您阅读linked bugzilla entry,则该错误在一年前已修复。

  • 客户端是否使用缺少尾部斜杠的URL。

如果我使用的是Junit的我看不出有任何问题,运行相同。

现在还不清楚你在说什么。

  • 如果你是说,你可以用手重现该问题,但不是一个JUnit测试(这是设计重现此),检查正在使用码头的同一版本在测试中和你的生产系统。然后检查配置的差异。

  • 如果您只是说您的JUnit测试不包括此问题,那么解决方案显而易见。写一个新的测试,确实掩盖它!

如果这些都没有帮助,那么您应该考虑将调试器附加到您的生产服务器(ouch!)以找出实际发生的事情。

+0

当前我正在使用jetty-7.4.4.v20110707,并且此错误在jetty的更高版本中得到修复。我写Junit的方法是启动jetty服务器(与prod中使用的代码相同),然后在端口8080上本地调用它,如下所示: – Ikshvak

+0

StringEntity se = new StringEntity(“data”)\t se。 setContentType(new BasicHeader(HTTP.CONTENT_TYPE,“text/xml”)); HttpPost post = new HttpPost(“http:// localhost:8888/CSCIntegration”); (se); post.setEntity(se); post.setHeader(“Accept”,“text/xml”); post.setHeader(“Content-Type”,“text/xml; charset = UTF-8”); response = client.execute(post); – Ikshvak

+0

使用Jetty -7.4以这种方式运行时。4在使用URL localhost:8888/CSCIntegration调用它时,我看不到任何问题。所以我不确定这是否真的是因为URL末尾的斜线。 – Ikshvak