在Java中从URL读取XML字符串
我正在以XML格式从restful web服务检索数据,但不幸的是,我的在Java中从URL读取XML字符串,java,xml,rest,url,null,Java,Xml,Rest,Url,Null,我正在以XML格式从restful web服务检索数据,但不幸的是,我的字符串为null。请帮助我,我的代码中的问题在哪里 下面是示例代码: URL url = new URL("http://loxvo.fogbugz.com/api.asp?cmd=logon&email=myemail&password=mypwd"); HttpURLConnection request1 = (HttpURLConnection) url.openConnection(); reques
字符串为null
。请帮助我,我的代码中的问题在哪里
下面是示例代码:
URL url = new URL("http://loxvo.fogbugz.com/api.asp?cmd=logon&email=myemail&password=mypwd");
HttpURLConnection request1 = (HttpURLConnection) url.openConnection();
request1.setRequestMethod("GET");
request1.connect();
InputStream is = request1.getInputStream();
BufferedReader bf_reader = new BufferedReader(new InputStreamReader(is));
String responseData = IOUtils.toString(bf_reader);
System.out.print(responseData);
我在rest客户端中尝试了这个url:它返回了正确的xml,但这里我的字符串为null
您可以像这样读取响应
BufferedReader bufferedReader =
new BufferedReader(new InputStreamReader(request1.getInputStream()));
String line;
while ((line = bufferedReader.readLine()) != null) {
System.out.print(line);
}
获取resp 302您的代码。试一试
URL url = new URL("https://loxvo.fogbugz.com/api.asp?cmd=logon&email=myemail&password=mypwd");
尝试将请求的InputStream直接传递给IOUtils.toString(),
因为IOUtils.toString自己进行缓冲
此外,如果请求失败,可以使用request1.getResponseCode()进行检查
已成功,或者是否存在任何类型的Http错误
此外,没有必要调用connect()方法,因为这是
在getInputStream()调用中隐式完成
更新:获取错误302。当然,我没有正确的登录数据。但请求必须使用以下代码工作:
try {
URL url = new URL("http://loxvo.fogbugz.com/api.asp?cmd=logon&email=myemail& password=mypwd");
//URL url = new URL("http://www.google.de");
HttpURLConnection request1 = (HttpURLConnection) url.openConnection();
request1.setRequestMethod("GET");
// request1.connect();
String code = String.valueOf(request1.getResponseCode());
System.out.println("Error code "+code);
InputStream is = request1.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(is));
String line;
while ((line = bufferedReader.readLine()) != null) {
System.out.println(line);
}
// BufferedReader bf_reader = new BufferedReader(new InputStreamReader(is));
// String responseData = IOUtils.toString(bf_reader);
// System.out.print(responseData);
} catch (Exception e) {
e.printStackTrace();
}
尝试使用扫描仪将InputStream转换为字符串。我试过这个代码,效果很好
URL url = new URL("http://loxvo.fogbugz.com/api.asp?cmd=logon&email=myemail&password=mypwd");
HttpURLConnection request1 = (HttpURLConnection) url.openConnection();
request1.setRequestMethod("GET");
request1.connect();
InputStream is = request1.getInputStream();
String inputStreamString = new Scanner(is,"UTF-8").useDelimiter("\\A").next();
System.out.print(inputStreamString);
问题是302HTTP错误,这意味着服务器执行重定向
如果您将URL从HTTP更改为HTTPS,那么它将以预期的方式工作。
请求的结果是:
OK
Error code 200
<?xml version="1.0" encoding="UTF-8"?><response><error code="1"><![CDATA[Incorrect password or username]]></error></response>
这将导致以下输出:
Found
Error code 302
Redirect URL https://loxvo.fogbugz.com/api.asp?cmd=logon&email=myemail&password=mypwd
在浏览器kqpduvm3d9lukegd0431hefc7v27f4中检查相同的内容这是我从客户端和浏览器获得的响应
Found
Error code 302
Redirect URL https://loxvo.fogbugz.com/api.asp?cmd=logon&email=myemail&password=mypwd