2015-11-08 311 views
0

我正在尝试发送请求以获取公共交通信息。下面是一个示例屏幕截图,指出我必须向站点发送XML请求,定义方法和服务引用(在示例中它是StopMonitoringRequest和020035811)。发送HTTP POST请求

Instructions

到目前为止,我已经成功地连接到服务,但我不知道从这里做。我迄今所做的这...

String user = ""; 
String pass = "";       
String url = "http://nextbus.mxdata.co.uk/nextbuses/1.0/1"; 

String authString = user + ":" + pass; 
byte[] authEncBytes = Base64.encodeBase64(authString.getBytes()); 
String authStringEnc = new String(authEncBytes); 

HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection(); 
connection.setRequestProperty("Authorization", "Basic " + authStringEnc); 
connection.setRequestMethod("POST"); 
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); 
connection.setRequestProperty("charset", "utf-8"); 
connection.setUseCaches(false); 
connection.setDoOutput(true); 

InputStream is = connection.getInputStream(); 
InputStreamReader isr = new InputStreamReader(is); 

int numCharsRead; 
char[] charArray = new char[1024]; 
StringBuffer sb = new StringBuffer(); 
while ((numCharsRead = isr.read(charArray)) > 0) { 
    sb.append(charArray, 0, numCharsRead); 
} 

String result = sb.toString(); 
System.out.print(result); 

...收到此:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<Siri version="1.0" xmlns="http://www.siri.org.uk/"> 
<ServiceDelivery> 
<ResponseTimestamp>2015-11-08T20:33:03.574Z</ResponseTimestamp> 
</ServiceDelivery> 
</Siri> 

如何进入所需的参数和方法?

回答

0

所以我不得不做的是创建一个HttpPost并将XML请求设置为一个实体,将其绑定到该帖子。这里是代码,如果任何人想要通过使用XML的HTTP POST请求信息,输出XML作为字符串:

// basic autthorization security 
String url = "http://nextbus.mxdata.co.uk/nextbuses/1.0/1"; 
String authString = "<username>:<password>"; 
byte[] authEncBytes = Base64.encodeBase64(authString.getBytes()); 
String authStringEnc = new String(authEncBytes); 

DefaultHttpClient client = new DefaultHttpClient(); 
HttpPost post = new HttpPost(url); 
post.setHeader("Authorization", "Basic " + authStringEnc); 
StringEntity input = new StringEntity(request); 
input.setContentType("text/xml"); 
post.setEntity(input); 
HttpResponse response = client.execute(post); 
HttpEntity entity = response.getEntity(); 
String unformattedXML = EntityUtils.toString(entity);