我正在尝试使用ACS(思科安全访问控制系统)来使用代码管理网络设备中的用户。我已经下载了随产品提供的示例,并以此为基础构建了我的代码。
当我在调试模式下测试它时,一切都很好但是当我将private static User getUserByName(RestFacade restFacade, String name)
{
User user = null;
String url = "/Rest/Identity/User/name/";
url = url.concat(name);
HttpResponse response = restFacade.get(url);
try {
byte buffer[] = new byte[8192];
int read = 0;
StringBuffer responseBody = new StringBuffer();
HttpEntity entity = response.getEntity();
if (entity != null) {
InputStream content = response.getEntity().getContent();
while ((read = content.read(buffer)) != -1) {
responseBody.append(new String(buffer, 0, read));
}
}
ByteArrayInputStream bais = new ByteArrayInputStream(responseBody
.toString().getBytes());
Unmarshaller unmarshaller = JAXBContext.newInstance(User.class).createUnmarshller();
user = (User) unmarshaller.unmarshal(bais);
} catch (Exception e) {
e.printStackTrace();
}
return user;
}
文件放在Jboss Web Server中并尝试从另一个应用程序执行main方法时,我收到此错误:
execute_async_script()
我的代码是:
js = '''
var callback = arguments[0];
var theForm = document.forms['theFormId'];
data = new FormData();
data.append('eventTarget', "''' + target + '''"); // this is the id of the file clicked
data.append('otherFormField', theForm.otherFormField.value);
var xhr = new XMLHttpRequest();
xhr.open('POST', theForm.action, true);
'''
for cookie in driver.get_cookies():
js += ' xhr.setRequestHeader("' + cookie['name'] + '", "' + cookie['value'] + '"); '
js += '''
xhr.onload = function () {
callback(this.responseText);
};
xhr.send(data);
'''
driver.set_script_timeout(30)
file = driver.execute_async_script(js)
我发现这样的错误的几乎所有解决方案,都说我在试图调用或更改xsd的Rest方法中改变了一些东西,但是我无法访问那些..
奇怪的是,当我从Eclipse调试但不在运行时调试时它可以工作。也许我正在使用的JAXB有不同的版本?我怎么能确定哪个罐装满了?
谢谢你, 伊戈尔。
答案 0 :(得分:0)
这听起来像您用于调试的开发环境,而您的目标应用程序服务器具有JAXB类/库和/或使用过的XSD的不同版本。
文档(http://www.cisco.com/c/en/us/td/docs/net_mgmt/cisco_secure_access_control_system/5-3/sdk/acs_sdk/rest.html)指定了三个XSD(公共,身份和查询)。
您是否已验证您拥有(或已下载)的版本是否与目标应用程序服务器上生成的JAXB类相匹配?