我需要进行API调用才能保存购物车订单。要获得订单的内容,这很简单:
https://domain.com/GetCart/{SessionID}
以上网址返回带有数据的XML文件。
但是,为了保存购物车内容,我不知道自己该做什么。所有文档都说:
使用带有以下参数的HTTP Post保存购物车:
等
我必须将这些数据发送到:
https://domain.com/SaveCart/{SessionID}
我的问题是,如何通过HTTP Post发送数据?我是否必须将https://domain.com/SaveCart/ {SessionID}放在表单的action参数中? E.g:
<form action="https://domain.com/SaveCart/{SessionID}">
如何通过HTTP Post将数据发送到API?
答案 0 :(得分:1)
您需要使用POST将cURL调用传递给必填字段作为帖子字段。
如果你传递它,下面的curl()函数会执行此操作:
$url = 'https://domain.com/SaveCart/{SessionID}';
将{SessionID}替换为会话ID并且:
$fields[ 'first_name' ] = 'Bob';
$fields[ 'last_name' ] = 'Smith';
$fields[ 'city' ] = 'Seattle';
将Bob,Smith和Seattle替换为相关文本;
然后只需将函数调用为:
$result = curl( $url, $fields );
curl()调用curl()下面的URLify函数,将$ fields转换为POSTing所需的格式。
function curl( $url, $fields = FALSE, $encode = TRUE, $tries = 1 ) {
$ch = curl_init();
curl_setopt( $ch, CURLOPT_URL, $url );
if ( ( $fields == FALSE ) ) {
curl_setopt( $ch, CURLOPT_HEADER, 0 );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
} else {
if ( is_array( $fields ) ) {
$fields_string = URLify( $fields, $encode );
curl_setopt( $ch, CURLOPT_POST, count( $fields ) );
} else {
$fields_string = $fields;
curl_setopt( $ch, CURLOPT_POST, 1 );
}
curl_setopt( $ch, CURLOPT_POSTFIELDS, $fields_string );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch, CURLOPT_TIMEOUT, 60 );
}
do {
$output = curl_exec( $ch );
$tries = $tries - 1;
if ( ( curl_errno( $ch ) <> FALSE ) AND ( $tries > 0 ) ) {
echo 'ERROR in curl: WILL RETRY AFTER 1 SECOND SLEEP! error number: ' . curl_errno( $ch ) . ' error : ' . curl_error( $ch ) . " url: $url";
sleep( 1 );
}
} while ( ( curl_errno( $ch ) <> FALSE ) AND ( $tries > 0 ) );
// Check if any error occurred
if ( curl_errno( $ch ) ) {
echo 'ERROR in curl: NO MORE RETRIES! error number: ' . curl_errno( $ch ) . ' error : ' . curl_error( $ch ) . " url: $url";
}
curl_close( $ch );
return $output;
}
此函数由curl()函数调用:
function URLify( $arr, $encode = FALSE ) {
$fields_string = '';
foreach( $arr as $key => $value ) {
if ( $encode ) {
$key = urlencode( $key );
$value = urlencode( $value );
}
$fields_string .= $key . '=' . $value . '&';
}
$fields_string = substr( $fields_string, 0, ( strlen( $fields_string ) - 1 ) );
return $fields_string;
}