gpt4 book ai didi

java - 为什么 VersionOne 无法识别 Assets 类型?

转载 作者:可可西里 更新时间:2023-11-01 17:35:56 25 4
gpt4 key购买 nike

更新:问题(见下文;见“原始问题”)仍然有效,但我有更多数据。通过将访问 token 作为 services 字段被实例化的字符串放入源代码,我能够成功检索 Assets 。即,这有效:

String token = "[mysecrettoken]";
try{
connector = V1Connector
.withInstanceUrl(V1_LOC)
.withUserAgentHeader(APPLICATION_NAME, APPLICATION_VERSION)
.withAccessToken(token)
.build();
}

但是,当我使用我创建的类从加密文本文件中检索 token 时,它会失败并出现我在下面指定的错误。

String token = TokenUtils.getAccessToken();

我已经使用 System.out.println 直观地验证 token 是否被完美解密。为什么 TokenUtils 返回的解密字符串(看起来是正确的)与直接包含在源代码中的字符串有任何不同?

原始问题:

我遇到了与 Griffin's 类似的问题,但我使用的是 Java,到目前为止我无法找出根本原因。值得注意的是,该程序的早期版本能够成功连接到 VersionOne 并检索 Assets ,但是当我检索该提交并使用当前访问 token (自提交以来已更改)再次尝试时,我得到了相同的结果错误如下。

这里是相关的方法; services 变量是包含类的一个字段:

private Asset findTeam(String teamName){

assert teamName != null;

Asset result = null;
IAssetType assetType = services.getMeta().getAssetType("Team");
Query query = new Query(assetType);
IAttributeDefinition nameAttr =
assetType.getAttributeDefinition("Name");
query.getSelection().add(nameAttr);

try{
QueryResult queryResult = services.retrieve(query);

for (Asset team: queryResult.getAssets()){
String str = team.getAttribute(nameAttr).getValue().toString();
assert str != null;
if (teamName.equals(str)){
result = team;
break;
}
}
}
catch(Exception e){
assert false;
e.printStackTrace();
}
return result;

}

这是由此产生的错误:

com.versionone.apiclient.exceptions.ConnectionException: 
HTTP/1.1 400 Bad Request error code: 400 VersionOne could not process the request.
at com.versionone.apiclient.V1Connector.manageErrors(V1Connector.java:420)
at com.versionone.apiclient.V1Connector.getData(V1Connector.java:368)
at com.versionone.apiclient.MetaModel.createDocument(MetaModel.java:252)
at com.versionone.apiclient.MetaModel.hookupAssetType(MetaModel.java:185)
at com.versionone.apiclient.MetaModel.findAssetType(MetaModel.java:140)
at com.versionone.apiclient.MetaModel.getAssetType(MetaModel.java:85)
at com.billhorvath.v1mods.TeamModder.addToTeam(TeamModder.java:63)
at com.billhorvath.v1mods.TeamModder.main(TeamModder.java:38)
com.versionone.apiclient.exceptions.MetaException: Error creating Document: Team
at com.versionone.apiclient.MetaModel.createDocument(MetaModel.java:259)
at com.versionone.apiclient.MetaModel.hookupAssetType(MetaModel.java:185)
at com.versionone.apiclient.MetaModel.findAssetType(MetaModel.java:140)
at com.versionone.apiclient.MetaModel.getAssetType(MetaModel.java:85)
at com.billhorvath.v1mods.TeamModder.addToTeam(TeamModder.java:63)
at com.billhorvath.v1mods.TeamModder.main(TeamModder.java:38)
Caused by: com.versionone.apiclient.exceptions.ConnectionException:
HTTP/1.1 400 Bad Request error code: 400 VersionOne could not process the request.
at com.versionone.apiclient.V1Connector.manageErrors(V1Connector.java:420)
at com.versionone.apiclient.V1Connector.getData(V1Connector.java:368)
at com.versionone.apiclient.MetaModel.createDocument(MetaModel.java:252)
... 5 more
Exception in thread "main" com.versionone.apiclient.exceptions.MetaException: Unknown AssetType: Team
at com.versionone.apiclient.MetaModel.getAssetType(MetaModel.java:88)
at com.billhorvath.v1mods.TeamModder.addToTeam(TeamModder.java:63)
at com.billhorvath.v1mods.TeamModder.main(TeamModder.java:38)
Caused by: com.versionone.apiclient.exceptions.MetaException: Error creating Document: Team
at com.versionone.apiclient.MetaModel.createDocument(MetaModel.java:259)
at com.versionone.apiclient.MetaModel.hookupAssetType(MetaModel.java:185)
at com.versionone.apiclient.MetaModel.findAssetType(MetaModel.java:140)
at com.versionone.apiclient.MetaModel.getAssetType(MetaModel.java:85)
... 2 more
Caused by: com.versionone.apiclient.exceptions.ConnectionException:
HTTP/1.1 400 Bad Request error code: 400 VersionOne could not process the request.
at com.versionone.apiclient.V1Connector.manageErrors(V1Connector.java:420)
at com.versionone.apiclient.V1Connector.getData(V1Connector.java:368)
at com.versionone.apiclient.MetaModel.createDocument(MetaModel.java:252)
... 5 more

除了常规搜索之外,我还查看了 VersionOne Java API 的源代码,以及 RFC for the 400 error code ;我还没有找到任何答案。有人有什么建议吗?

最佳答案

(向 Mark Irvin 致敬二进制比较建议。)

事实证明,问题与 token 的加密方式有关:由于 token 的长度为 30 个字符,并且密码算法(在本例中为 AES)要求 32 个字节,因此两个空白字节是在加密过程中附加。我修改了解密周期以从字符串末尾去除整数值为 0 的字符,wallah!有用。

关于java - 为什么 VersionOne 无法识别 Assets 类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31461932/

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