我正在从 Java 调用 Sharepoint 2010 oData 服务,这会导致 400 错误。我可以通过相同的代码(使用 NTLM)成功连接到 XML 格式的 Sharepoint 2010 列表。
我看到一个相关的帖子HttpClient 同时使用 SSL 加密和 NTLM 身份验证失败,其中谈到了相同的服务 (listdata.svc) 和 400 错误。
有谁知道使用什么确切设置来解决上面帖子中的错误?有谁知道他们是否指的是 IIS 中的 .NET 授权规则?
我们使用的是 IIS 7.5。
我的代码如下所示:
String responseText = getAuthenticatedResponse(Url, domain, userName, password);
System.out.println("response: " + responseText);
该方法使用 Java 1.6 HTTPURLConnection:
private static String getAuthenticatedResponse(
final String urlStr, final String domain,
final String userName, final String password) throws IOException {
StringBuilder response = new StringBuilder();
Authenticator.setDefault(new Authenticator() {
@Override
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(
domain + "\\" + userName, password.toCharArray());
}
});
URL urlRequest = new URL(urlStr);
HttpURLConnection conn = (HttpURLConnection) urlRequest.openConnection();
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setRequestMethod("GET");
InputStream stream = conn.getInputStream();
BufferedReader in = new BufferedReader(new InputStreamReader(stream));
String str = "";
while ((str = in.readLine()) != null) {
response.append(str);
}
in.close();
return response.toString();
}
我得到的错误是:
Response Excerpt:
HTTP/1.1 400 Bad Request..Content-Type: application/xml
<message xml:lang="en-US">Media type requires a '/' character. </message>
Microsoft 社交媒体类型中提到了类似的问题。任何人遇到这个并知道如何解决这个问题?
任何帮助将非常感激!
瓦妮塔