2015-11-08 50 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);