2015-11-08 11 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 как объект, привязав его к сообщению. Вот код, если кто-то хочет запросить информацию через HTTP POST с использованием XML, выводя 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); 
Смежные вопросы