我的问题似乎和这个问题一样:Java equivalent of Pythons urllib.urlencode(HashMap based UrlEncode)然而,不是。因为它的答案是不对的(或者我做错了一些我不知道的事情)。你知道吗
我有这个Python3代码:
def create_vxttoken_data(path_uri, expiry, reuse, shared_secret):
# Combine the parameters into a URL-encoded string
message = []
message.extend([('pathURI', path_uri)])
message.extend([('expiry', expiry)])
message.extend([('reuse', reuse)])
print(message)
url_encoded_message = urlencode(message)
print(url_encoded_message)
# ... rest of the code
这是它的输出:
[('pathURI', 'http://my.domain.net/*'), ('expiry', 1553937508), ('reuse', 0)]
pathURI=http%3A%2F%2Fmy.domain.net%2F%2A&expiry=1553937508&reuse=0
我试着用Kotlin写。这是我的密码:
fun main(args: Array<String>) {
val queryParams = "pathURI=$PATH_URI&expiry=${expiryTime(10)}&reuse=$REUSE"
println(queryParams)
val encodedQueryParams = URLEncoder.encode(queryParams, Charsets.UTF_8.toString())
println(encodedQueryParams)
// ... rest of the code
这是它的输出:
pathURI=http://my.domain.net/*&expiry=1553938196&reuse=0
pathURI%3Dhttp%3A%2F%2Fmy.domain.net%2F*%26expiry%3D1553938196%26reuse%3D0
通过比较第二行输出,您可以看到Kotlin/Java转换了=
,而Python没有转换,而且Kotlin/Java没有转换*
,而Python转换了。我希望Kotlin/Java像Python那样生成输出。我的代码的其余部分将基于此信息创建一个令牌。因此,我的身份验证失败。你知道吗
注意:在我的Kotlin/Java文件中,当我替换
val encodedQueryParams = URLEncoder.encode(queryParams, Charsets.UTF_8.toString())
By
val encodedQueryParams = "pathURI=http%3A%2F%2Fmy.domain.net%2F%2A&expiry=1553937508&reuse=0"
然后我的rest代码将生成一个与Python生成的完全相同的令牌。因此,它表明我的URLEncoder.encode
有问题。你知道吗
感谢@user207421。我发现了什么是我的错误,我应该如何纠正它。所以,这是等效的Kotlin代码:
要点可以在here中找到。你知道吗
相关问题 更多 >
编程相关推荐