簡體   English   中英

盡管存在json編碼,但所需的參數不存在

[英]Required parameter not present despite being in json encoding

我正在使用alamofire從swift發送一個http發布請求:

let url = userActivity.webpageURL

    if(url?.description.contains(UniversalLinkHandler().urlPrefix))!
    {
        let keystore = try! EtherKeystore()
        let signedOrder = UniversalLinkHandler().parseURL(url: (url?.description)!)
        let signature = signedOrder.signature.substring(from: 2)
        let parameters: Parameters = [
            "address" : keystore.recentlyUsedWallet?.address.description,
            "indices": signedOrder.order.indices,
            "v" : signature.substring(from: 128),
            "r": signature.substring(from: 0, to: 64),
            "s": signature.substring(from: 64, to: 128)
        ]
        let query = UniversalLinkHandler.paymentServer

        Alamofire.request(
                query,
                method: .post,
                parameters: parameters
        ).responseJSON {
            result in
            print(result)
        }
    }

索引在調試器中顯示為普通的UInt16數組,但是當發送到服務器時,它表示不存在索引數組

服務器在Java中,並使用springboot:

@RequestMapping(value = "/claimToken", method = RequestMethod.POST)
public ResponseEntity getAToken(@RequestParam(value="address") String address,
                                @RequestParam(value="indices") int[] indices,
                                @RequestParam(value = "v") byte v,
                                @RequestParam(value = "r") String r,
                                @RequestParam(value = "s") String s
)

第一個參數地址可以正常工作,但不適用於索引的int []數組

任何幫助深表感謝。

因為是導致問題的原因是您的signedOrder.order.indices數組,並且類型為[UInt16] ,所以我的建議是:

let indices = signedOrder.order.indices.map(Int.init)
let parameters: Parameters = [
            "address" : keystore.recentlyUsedWallet?.address.description,
            "indices": indices,
            "v" : signature.substring(from: 128),
            "r": signature.substring(from: 0, to: 64),
            "s": signature.substring(from: 64, to: 128)
        ]

映射到Int可能會很好地解決您的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM