如何使用 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')
......
我必须与所谓的 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')
......