如何使用 Apache HTTP 客户端在 GET 请求中发送 3d 数组?

How do you send a 3d array in a GET request with Apache HTTP client?

我必须与所谓的 REST API 集成,它根本不是 RESTFul。要向特定的 GET 请求添加更多数据,我必须在 URL 中发送一个 3d 数组(丑陋!!)。有人知道如何使用 Apache HTTP 客户端 v4.0.1 执行此操作吗?

这是 PHP 中的示例:

$arrArguments['saleData'] = array(); 
$arrArguments['saleData']['invoiceDate'] = 'abcdef';
$arrArguments['saleData']['deliveryDate'] = 'abcdef';
$arrArguments['saleData']['orderData'] = array(); 
$arrArguments['saleData']['orderData'][0] = array(); 
$arrArguments['saleData']['orderData'][0]['productId'] = 'abcdef';
$arrArguments['saleData']['orderData'][0]['description'] = 'abcdef';
$arrArguments['saleData']['orderData'][0]['price'] = 18819;
$arrArguments['saleData']['orderData'][0]['quantity'] = 24389;
$arrArguments['saleData']['orderData'][0]['vatCode'] = 'abcdef';;;;

请试试这个

$arrArguments['saleData'] = array(); 
$arrArguments['saleData']['orderData'] = array(); 
$arrArguments['saleData']['orderData'][0] = array(); 

$arrArguments['saleData']['invoiceDate'] = 'abcdef';
$arrArguments['saleData']['deliveryDate'] = 'abcdef';

$arrArguments['saleData']['orderData'][0]['productId'] = 'abcdef';
$arrArguments['saleData']['orderData'][0]['description'] = 'abcdef';
$arrArguments['saleData']['orderData'][0]['price'] = 18819;
$arrArguments['saleData']['orderData'][0]['quantity'] = 24389;
$arrArguments['saleData']['orderData'][0]['vatCode'] = 'abcdef';

$restUrl ='/saleData/orderData';
new Ajax.Request("<?php echo $this->getUrl($restUrl) ?>", {
                  method: 'Post',
                  parameters: {
                     "saledata" :$arrArguments['saleData']
                               },
                  onComplete: function(response) {
                    console.log(response);  
                  }
              });

如果您使用 java/php 作为后端语言,那么您将获得请求参数以获取数据。

对于 java :-

@RequestMapping(value = "/saleData/orderData", method = RequestMethod.GET)
@ResponseBody
public Map<String, Object> beforeEdit(HttpServletRequest request,HttpSession session) {
    Map<String, Object> resultMap = new HashMap<>();
    String requestString = request.getParameter("saledata");//----may this change according to your json parsar 

}

对于 php

    $saledata = $this->getRequest()->getParam('saledata');

正确答案来自 Thilo。您可以只添加 "saleData[OrderData][0][productId]" 作为参数名称,然后指定值。所以你可以有这样的东西:

final URIBuilder uriBuilder = new URIBuilder(apiUrl)
        .setPath(this.apiStartPath)
        .setParameter("saleData[OrderData][0][productId]", '12334')
        ......