您可以使用https://github.com/square/okhttp
示例代码
// using OkHttp
public class PropFindExample {
private final OkHttpClient client = new OkHttpClient();
String run(String url) throws IOException {
String credential = Credentials.basic(userName, password);
// body
String body = "<d:propfind xmlns:d=\"DAV:\" xmlns:cs=\"http://calendarserver.org/ns/\">\n" +
" <d:prop>\n" +
" <d:displayname />\n" +
" <d:getetag />\n" +
" </d:prop>\n" +
"</d:propfind>";
Request request = new Request.Builder()
.url(url)
.method("PROPFIND", RequestBody.create(MediaType.parse(body), body))
.header("DEPTH", "1")
.header("Authorization", credential)
.header("Content-Type", "text/xml")
.build();
Response response = client.newCall(request).execute();
return response.body().string();
}
}
或者玩 Sockets
示例代码
String host = "example.com";
int port = 443;
String path = "/placeholder";
String userName = "username";
String password = "password";
SSLSocketFactory ssf = (SSLSocketFactory) SSLSocketFactory.getDefault();
Socket socket = ssf.createSocket(host, port);
PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())));
// xml data to be sent in body
String xmlData = "<?xml version=\"1.0\"?> <d:propfind xmlns:d=\"DAV:\" xmlns:cs=\"http://calendarserver.org/ns/\"> <d:prop> <d:displayname /> <d:getetag /> </d:prop> </d:propfind>";
// append headers
out.println("PROPFIND path HTTP/1.1");
out.println("Host: "+host);
String userCredentials = username+":"+password;
String basicAuth = "Basic " + new String(Base64.encode(userCredentials.getBytes(), Base64.DEFAULT));
String authorization = "Authorization: " + basicAuth;
out.println(authorization.trim());
out.println("Content-Length: "+ xmlData.length());
out.println("Content-Type: text/xml");
out.println("Depth: 1");
out.println();
// append body
out.println(xmlData);
out.flush();
// get response
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String inputLine;
System.out.println("--------------------------------------------------------");
System.out.println("---------------Printing response--------------------------");
System.out.println("--------------------------------------------------------");
while ((inputLine = in.readLine()) != null) {
System.out.println(inputLine);
}
in.close();