gpt4 book ai didi

Java 摘要认证 POST XML

转载 作者:可可西里 更新时间:2023-11-01 16:31:14 26 4
gpt4 key购买 nike

我需要一些帮助才能使 DIGEST 身份验证正常工作。我正在使用 apache 4.1 库。当我尝试登录时,我得到了。

线程“main”中的异常 javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated

我正在尝试登录 Asterisk SwitchVox Dev Extend API,您只需发送一个 xml 帖子,它就会返回信息。我当然有正确的用户名/密码,我可以在 PERL 脚本上使用它,但我无法在 JAVA 中使用它。

这是我的代码

public class Main {

public static void main(String[] args) throws Exception {

HttpHost targetHost = new HttpHost("192.168.143.253", 443, "https");

DefaultHttpClient httpclient = new DefaultHttpClient();
try {
httpclient.getCredentialsProvider().setCredentials(
new AuthScope("192.168.143.253", targetHost.getPort()),
new UsernamePasswordCredentials("username", "mypassword"));

// Create AuthCache instance
AuthCache authCache = new BasicAuthCache();
// Generate DIGEST scheme object, initialize it and add it to the local auth cache

DigestScheme digestAuth = new DigestScheme();

authCache.put(targetHost, digestAuth);

// Add AuthCache to the execution context
BasicHttpContext localcontext = new BasicHttpContext();
localcontext.setAttribute(ClientContext.AUTH_CACHE, authCache);

HttpGet httpget = new HttpGet("https://192.168.143.253/xml/");

System.out.println("executing request: " + httpget.getRequestLine());
System.out.println("to target: " + targetHost);

for (int i = 0; i < 3; i++) {
HttpResponse response = httpclient.execute(targetHost, httpget, localcontext);
HttpEntity entity = response.getEntity();

System.out.println("----------------------------------------");
System.out.println(response.getStatusLine());
if (entity != null) {
System.out.println("Response content length: " + entity.getContentLength());
}
EntityUtils.consume(entity);
}

} finally {
// When HttpClient instance is no longer needed,
// shut down the connection manager to ensure
// immediate deallocation of all system resources
httpclient.getConnectionManager().shutdown();
}
}

最佳答案

我终于找到了问题的答案。

public static void main(String args[]) {

final String username = "user";
final String password = "password";



Authenticator.setDefault(new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
PasswordAuthentication pa = new PasswordAuthentication (username, password.toCharArray());
//System.out.println(pa.getUserName() + ":" + new String(pa.getPassword()));
return pa;
}
});
BufferedReader in = null;
StringBuffer sb = new StringBuffer();

try {
//URL url = new URL(strURL);

HttpsURLConnection connection = (HttpsURLConnection) new URL("https://secureHost/").openConnection();
connection.setDefaultHostnameVerifier(new CustomizedHostnameVerifier());
connection.setHostnameVerifier(new CustomizedHostnameVerifier());
connection.setDoOutput(true);
connection.setDoInput(true);
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type","text/xml");
PrintWriter out = new PrintWriter(connection.getOutputStream());
String requestString = "<request method=\"switchvox.currentCalls.getList\"></request>";

out.println(requestString);
out.close();

in = new BufferedReader(new InputStreamReader(connection
.getInputStream()));

String line;

while ((line = in.readLine()) != null) {
sb.append(line).append("\n");
}
} catch (java.net.ProtocolException e) {
sb.append("User Or Password is wrong!");
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (in != null) {
in.close();
}
} catch (Exception e) {
System.out.println("Exception");
}
}

System.out.println("The Data is: " + sb.toString());

}

关于Java 摘要认证 POST XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5508301/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com