How to pass parameter to webservices - php

i want to pass parameter for using web services. how can i pass this. i have passed like this. is this correct...?
$TemplateId = $_POST["template_id"];
$MetafamilyId = $_POST["metafamily_id"];
$MatchType = $_POST["match_type_name"];
$name = trim($_POST["name"]);
$password = md5(trim($_POST["password"]));
$data = array("TemplateId" => $TemplateId,
"MetafamilyId" => $MetafamilyId,
"MatchType" => $MatchType,
"name" => $name,
"password" => $password );
$postData= json_encode($data);
$url="http://google.com";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST,count($data));
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_PROTOCOLS, CURLPROTO_HTTP);
$getdata=curl_exec($ch);
echo $getdata;
curl_close($ch);

Related

PHP post data is not working with AWS4 Signature method for authentication

in the below example, when i am enabling post data curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
getting 'The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method', but when i disabled the post data, its working.
Should i pass this data parameters anywhere else?
$get_token = new GetToken();
$token_obj = $get_token->get_session_token();
$accessKeyID = $token_obj->access_key_id;
$secretAccessKey = $token_obj->secret_key;
$regionName = $token_obj->region;
$serviceName = 'execute-api';
$httpMethodName = 'POST';
$canonicalURI = '/orders/salesorder';
$queryParametes = array();
$awsHeaders = array('content-type'=>'application/json','host'=>'api.mysite.com','id_token'=>$token_obj->id_token,'x-amz-date'=>gmdate("Ymd\THis\Z"),'x-amz-security-token'=>$token_obj->session_token);
$payload = "";
$get_aws4_sign = new AWSV4($accessKeyID,$secretAccessKey,$regionName,$serviceName,$httpMethodName,$canonicalURI,$queryParametes,$awsHeaders,$payload);
$headers_result = $get_aws4_sign->getHeaders();
$headersArr = array(
'host' => $headers_result['host'],
'id_token' => $headers_result['id_token'],
'xamzdate' => $headers_result['x-amz-date'],
'xamzsecuritytoken' => $headers_result['x-amz-security-token'],
'Authorization' => $headers_result['Authorization']
);
$data = array("id" => "126757879");
$data_string = json_encode($data);
$ch = curl_init('https://api.mysite.com/orders/salesorder');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'content-type: '.$headers_result['content-type'],
'host: '.$headers_result['host'],
'id_token: '.$headers_result['id_token'],
'x-amz-date: '.$headers_result['x-amz-date'],
'x-amz-security-token: '.$headers_result['x-amz-security-token'],
'Authorization: '.$headers_result['Authorization']
));
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
//execute post
$result = json_decode( curl_exec($ch), TRUE);
//close connection
curl_close($ch);
print_r($result);
$get_token = new GetToken();
$token_obj = $get_token->get_session_token();
$accessKeyID = $token_obj->access_key_id;
$secretAccessKey = $token_obj->secret_key;
$regionName = $token_obj->region;
$serviceName = 'execute-api';
$httpMethodName = 'POST';
$canonicalURI = '/orders/salesorder';
$queryParametes = array();
$awsHeaders = array('content-type'=>'application/json','host'=>'api.mysite.com','id_token'=>$token_obj->id_token,'x-amz-date'=>gmdate("Ymd\THis\Z"),'x-amz-security-token'=>$token_obj->session_token);
$data = array("id" => "126757879");
$data_string = json_encode($data);
$payload = $data_string;
$get_aws4_sign = new AWSV4($accessKeyID,$secretAccessKey,$regionName,$serviceName,$httpMethodName,$canonicalURI,$queryParametes,$awsHeaders,$payload);
$headers_result = $get_aws4_sign->getHeaders();
$headersArr = array(
'host' => $headers_result['host'],
'id_token' => $headers_result['id_token'],
'xamzdate' => $headers_result['x-amz-date'],
'xamzsecuritytoken' => $headers_result['x-amz-security-token'],
'Authorization' => $headers_result['Authorization']
);
$ch = curl_init('https://api.mysite.com/orders/salesorder');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'content-type: '.$headers_result['content-type'],
'host: '.$headers_result['host'],
'id_token: '.$headers_result['id_token'],
'x-amz-date: '.$headers_result['x-amz-date'],
'x-amz-security-token: '.$headers_result['x-amz-security-token'],
'Authorization: '.$headers_result['Authorization']
));
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
//execute post
$result = json_decode( curl_exec($ch), TRUE);
//close connection
curl_close($ch);
print_r($result);

$_GET variable passed in CURL POST

I can't figure out why the code below doesn't work, but it does when I replace 'page' => $page_no with 'page' => 4.
The code:
$page_no = $_GET['page_no'];
$base_url = 'url here';
$api_id = 'api here';
$secret = ' secret here ';
$postvars = [
'query' => 'query here',
'page' => $page_no,
'fields' => ['ip', 'city','province', 'country_code', 'country'],
'fattened' => true
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$base_url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($postvars));
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, "$api_id:$secret");
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLINFO_HEADER_OUT, true);
$json = curl_exec($ch);
The URL I am using is: https://example.com/search.php?page_no=4
Any help is greatly appreciated.

error_code 129 in VK api appWidgets.saveAppImage

Good day! I'm trying to load an image using the method appWidgets.saveAppImage. In the beginning I receive URL the server for loading -> getAppImageUploadServer, there all ok!
I receive a hash and an image, send them a POST request and get an error. Here is my code:
$token = "Service_access_key";
$tmp_image = file_get_contents('https://www.ejin.ru/wp-content/uploads/2017/12/667108931864_667108931864-150x150.jpg');
file_put_contents(dirname(__FILE__).'/tmp.jpg',$tmp_image);
$img_path = dirname(__FILE__).'/tmp.jpg';
$post_data = array("image" => "#".$img_path);
$upload_url = file_get_contents("https://api.vk.com/method/appWidgets.getAppImageUploadServer?v=5.85&image_type=50x50&access_token=".$token);
$url = json_decode($upload_url)->response->upload_url;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
$result = json_decode(curl_exec($ch),true);
$safe = file_get_contents("https://api.vk.com/method/appWidgets.saveAppImage?v=5.85&hash=".$result['hash']."&image=".$result['image']."&access_token=".$token);
echo $safe;
echo:
"error_code":129,"error_msg":"Invalid photo: file not found, from upl_850128?act=app_widget_image"
what's my mistake?
<?
$request_params = array(
'image_type' => '510x128',
'access_token' => 'xxx',
'v' => '5.92'
);
$t = json_decode(file_get_contents('https://api.vk.com/method/appWidgets.getAppImageUploadServer?'. http_build_query($request_params)));
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type:multipart/form-data"));
curl_setopt($ch, CURLOPT_URL, $t->response->upload_url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, array("image" => new CURLFile(dirname(__FILE__).'\img.jpg')));
curl_setopt($ch, CURLOPT_SAFE_UPLOAD, true);
$result = json_decode(curl_exec($ch));
curl_close($ch);
$request_params = array(
'hash' => $result->hash,
'image' => $result->image,
'access_token' => 'xxx',
'v' => '5.92'
);
print_r(file_get_contents('https://api.vk.com/method/appWidgets.saveAppImage?'. http_build_query($request_params)));
?>

LinkedIn API file_get_contents timing out

I currently use file_get_contents() to call the LinkedIn Authentication API.
I successful call /uas/oauth2/authorization but when I call /uas/oauth2/accessToken with file_get_contents() it times out.
The odd thing is that it works perfectly on my localhost.
I've made sure allow_url_fopen is on and manage to open google.com with file_get_contents().
As you can probably imagine, it's driving me crazy trying to debug it (and fix it).
Do any of you have any suggestions on why this is the case?
The issue is because /uas/oauth2/accessToken requires a POST type method, file_get_contents always uses GET. Consider switching to curl, method for both of your calls are provided below.
This information is available within the documentation
Variables for both calls
$apiKey = '';
$state = '';
$scope = '';
$redirectUri = '';
/uas/oauth2/authorization
$postData = http_build_query(
[
'response_type' => 'code',
'client_id' => $apiKey,
'scope' => $scope
'state' => $state,
'redirect_uri' => $redirectUri
]
);
$ch = curl_init();
$endpoint = sprintf('%s?%s', 'https://www.linkedin.com/uas/oauth2/authorization', $postData);
curl_setopt($ch, CURLOPT_URL, $endpoint);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_MAXREDIRS, 10);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FAILONERROR, false);
curl_setopt($ch, CURLOPT_TIMEOUT, 15);
$response = curl_exec($ch);
/uas/oauth2/accessToken
$postData = http_build_query(
[
'grant_type' => 'authorization_code',
'client_id' => $apiKey,
'scope' => $scope
'state' => $state,
'redirect_uri' => $redirectUri
]
);
$ch = curl_init();
$endpoint = 'https://www.linkedin.com/uas/oauth2/accessToken';
curl_setopt($ch, CURLOPT_URL, $endpoint);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_MAXREDIRS, 10);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FAILONERROR, false);
curl_setopt($ch, CURLOPT_TIMEOUT, 15);
$response = curl_exec($ch);

curl not working,not show any output

<?php
$url = "https://www.example.com";
$data = array(
"email" => "vicky#gg.com",
"firstname" => "firstname",
"lastname" => "lastname",
"password1" => "123456",
"password2" => "123456",
"key" => "d12121c70dda5edfgd1df6633fdb3"
);
$data_string = json_encode($data);
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type:application/json'));
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,$data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
$result = curl_exec($ch);
$output = json_decode($result,true);
curl_close($ch);
echo $output;
?>
Use
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
to disable SSL check.

Categories