从 rhino 引擎到码头服务器的 HTTP 身份验证
HTTP Authentication to jetty server from rhino engine
我正在尝试建立与由 Jetty 提供支持的 Web 服务器的连接。
代码来自 Rhino 脚本引擎 运行。
连接看起来正常,但我收到此错误,并且当我不输入 "Authorization" header 时,可以在日志文件中获取身份验证失败。添加后,出现以下异常:
Illegal character(s) in message header value: Basic <base64>
我的密码是:
write2file("Entering doJSON.");
URL = java.net.URL;
HttpURLConnection = java.net.HttpURLConnection;
OutputStream = java.io.OutputStream;
BufferedReader = java.io.BufferedReader;
var url = new URL("http://server-example.com");
Base64 = org.apache.commons.codec.binary.Base64;
var up = username + ":" + password;
var basicAuth = "Basic " + new java.lang.String(Base64.encodeBase64Chunked(getBytes(up)));
write2file("Basic Auth : " + basicAuth);
var conn = url.openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("POST");
conn.setRequestProperty("Content", "application/json");
conn.setRequestProperty ("Authorization", basicAuth);
var os = conn.getOutputStream();
os.write(getBytes(data));
os.flush();
write2file("Response code : " + conn.getResponseCode());
if (conn.getResponseCode() != HttpURLConnection.HTTP_CREATED) {
var br = new BufferedReader(new java.io.InputStreamReader((conn.getErrorStream())));
var output; var ret;
while ((output = br.readLine()) != null) {
ret = ret + output;
}
write2file("Response Text : " + ret);
return -1;
}
var br = new BufferedReader(new java.io.InputStreamReader(
(conn.getInputStream())));
var output; var reply;
while ((output = br.readLine()) != null) {
reply = output + reply;
}
write2file(reply);
conn.disconnect();
如果您有任何想法,请不要犹豫。
提前致谢。
我终于明白了。该问题与身份验证无关,但实际上是以下行:
conn.setRequestProperty("Content", "application/json");
这应该是:
conn.setRequestProperty("Content-Type", "application/json");
很容易修复,错误没有指向正确的方向。
我正在尝试建立与由 Jetty 提供支持的 Web 服务器的连接。 代码来自 Rhino 脚本引擎 运行。
连接看起来正常,但我收到此错误,并且当我不输入 "Authorization" header 时,可以在日志文件中获取身份验证失败。添加后,出现以下异常:
Illegal character(s) in message header value: Basic <base64>
我的密码是:
write2file("Entering doJSON.");
URL = java.net.URL;
HttpURLConnection = java.net.HttpURLConnection;
OutputStream = java.io.OutputStream;
BufferedReader = java.io.BufferedReader;
var url = new URL("http://server-example.com");
Base64 = org.apache.commons.codec.binary.Base64;
var up = username + ":" + password;
var basicAuth = "Basic " + new java.lang.String(Base64.encodeBase64Chunked(getBytes(up)));
write2file("Basic Auth : " + basicAuth);
var conn = url.openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("POST");
conn.setRequestProperty("Content", "application/json");
conn.setRequestProperty ("Authorization", basicAuth);
var os = conn.getOutputStream();
os.write(getBytes(data));
os.flush();
write2file("Response code : " + conn.getResponseCode());
if (conn.getResponseCode() != HttpURLConnection.HTTP_CREATED) {
var br = new BufferedReader(new java.io.InputStreamReader((conn.getErrorStream())));
var output; var ret;
while ((output = br.readLine()) != null) {
ret = ret + output;
}
write2file("Response Text : " + ret);
return -1;
}
var br = new BufferedReader(new java.io.InputStreamReader(
(conn.getInputStream())));
var output; var reply;
while ((output = br.readLine()) != null) {
reply = output + reply;
}
write2file(reply);
conn.disconnect();
如果您有任何想法,请不要犹豫。
提前致谢。
我终于明白了。该问题与身份验证无关,但实际上是以下行:
conn.setRequestProperty("Content", "application/json");
这应该是:
conn.setRequestProperty("Content-Type", "application/json");
很容易修复,错误没有指向正确的方向。