繁体   English   中英

发送HTTP POST请求

[英]Sending a HTTP POST Request

我正在尝试发送获取公共交通信息的请求。 这是下面示例的屏幕截图,表明我必须向站点发送XML请求,并定义方法和服务引用(在示例中为StopMonitoringRequest和020035811)。

使用说明

到目前为止,我已经设法连接到该服务,但是我不知道该怎么办。 到目前为止,我已经做到了...

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>

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

因此,我要做的是创建一个HttpPost并将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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM