我正在做一个GET请求,这段代码适用于我们所有现有的测试,对于一个新endpoint,它给出了400个错误。我可以在《邮差》中很好地达到终点。conn.getErrorStream()不打印任何内容。代码似乎在url.openConnection处失败(没有引发异常)。如果我在那行之后执行conn.getResponseCode(),它返回400。我想可能它不喜欢查询中的管道字符,而是通过URLEncoder对其进行编码。encode(resourceContext)以及URLEncoder。encode(baseUrl resourceContext)没有帮助,最终引发了MalformedURLException。以下是我想要点击的endpoint(匿名):https://usqa0003d.usa.company.com:17462/positions/1535000400000/CUR/USA|415 | 415 | CUST | GL53I7TPYBYM |匹配
当我将调试器连接到服务器时,我想什么都不发生,所以请求永远不会到达服务器。我进入openConnection,这导致了一个充满var5、var6等的兔子洞。我切换到HttpsURLConnection,但那里也没有骰子。还有其他建议吗?
URL url = new URL(baseUrl + resourceContext);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoOutput(true);
conn.setRequestMethod(requestType);
if(messageLibraryJson) {
conn.setRequestProperty("Content-Type", "application/json;class=true");
conn.setRequestProperty("Accept", "application/json;class=true");
} else {
conn.setRequestProperty("Content-Type", "application/json");
conn.setRequestProperty("Accept", "application/json");
}
String userpass = username + ":" + password;
String basicAuth = "Basic " + javax.xml.bind.DatatypeConverter.printBase64Binary(userpass.getBytes());
conn.setRequestProperty("Authorization", basicAuth);
if(requestType.equals("POST")) {
OutputStream os = conn.getOutputStream();
os.write(requestJson.getBytes());
os.flush();
}
if (conn.getResponseCode() != HttpURLConnection.HTTP_OK) {
logger.error("ERROR in REST CLIENT");
logger.error("URL = " + baseUrl + resourceContext);
logger.error("Request = " + requestJson);
throw new RuntimeException("Failed : HTTP error code : "
+ conn.getResponseCode());
}
BufferedReader br = new BufferedReader(new InputStreamReader(
(conn.getInputStream())));
事实上,是“|”字符引起了麻烦。如果我执行以下操作:
String urlString = (baseUrl + resourceContext).replace("|", "%7C");
URL url = new URL(urlString);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
它起作用了。生成以下URL字符串:https://usqa0003d.usa.company.com:17462/positions/1535000400000/CUR/USA|415 | 415 | CUST | GL53I7TPYBYM |匹配
但是,当我这样做时:
String enc = baseUrl + URLEncoder.encode(resourceContext);
我得到:https://clqa0003d.usa.company.com:17462/positions/1535000400000/CUR/USA|415|415|CUST|GL53I7TPYBYM|匹配
“/”被替换为“/”(除了管道字符之外),并且由于某种原因导致了问题。作为参考,endpoint实际上是这样定义的:
@RequestMapping(value = "/{param1}/{param2}/{param3:.*}", method = RequestMethod.GET)
类级endpoint(如何称为???)为:
@RequestMapping(value = "/positions",
produces = {"application/vnd.cme.cdo+json", "application/json;class=true", "application/x-protobuf", "application/x-protobuf-text"},
consumes = {"application/vnd.cme.cdo+json", "application/json;class=true", "application/x-protobuf", "application/x-protobuf-text"})
public class PositionController implements IPositionController {
有人能评论一下为什么将“/”转换为“/”会引起麻烦吗?
我正在开发一个线程java应用程序,它通过点击url发送sms消息 问题是我在NTLM代理服务器后面,我搜索了一天的大部分时间,尝试了许多解决方案,但没有成功。应用程序给出了标题错误,当我试图打印错误响应时,我发现错误页面来自代理服务器 这是击打密码 我得到了喘息的机会 任何帮助都很感激谢谢
我得到这个错误: java。木卫一。IOException:服务器为URL返回了HTTP响应代码400:https://graph.facebook.com/search?q=java 对于这个代码: 我不明白为什么?
我的肥皂API在localHost上运行。当我从浏览器或肥皂用户界面访问它时,它工作正常。但是当我从我的java客户端访问它时,它会抛出500个错误 我试图调试代码,但找不到任何东西。服务器日志也不会打印任何内容。只有tomcat访问日志显示请求的响应代码 例外:java。木卫一。IOException:服务器为URL返回了HTTP响应代码500:http://10.142.240.103:808
我可以访问网站kissmanga.com但我不能通过程序访问它。我修正了错误403,我之前得到的,但现在我得到错误503。 好的,这段代码可以解决一个小问题。我没有得到完整的html,但只有2/3。
问题内容: 我想从URL打开一个链接:“ http://www.kohls.com/search.jsp?search=jacket&submit- search=web-regular ”,有时我得到: java.io.IOException:服务器返回URL的HTTP响应代码:403。但是使用浏览器打开网址是可以的。以下是我的代码的一部分: 错误详情 线程“主”中的异常java.io.IOEx
问题内容: 我正在尝试从URL获取InputStream。可以从Firefox打开URL。它返回一个json,并且我已经安装了一个插件以在Firefox中查看json,因此我可以在其中查看它。 所以我尝试通过以下方式从Java获取它: 但是它在urlConnection.getInputStream()中抛出IOException。 我也尝试过: 但是没有运气。 任何信息都是可观的。提前致谢。 问