PHP将JSON值发布到下一页

时间:2014-01-23 02:38:22

标签: php json curl

我想在1.php中抓取json字符串,设置对象和httpheaders(例如)。以JSON格式获取这些值并显示在下一页(2.php)中。

我尝试使用CURL方法。我是PHP的新手。不确定CURL方法是否最适合POST数据..会话或cookie方法不需要。除此之外还有其他任何方法来POST数据吗?

1.PHP:

<?php
$data = array($item_type = "SubscriptionConfirmation";
$message = "165545c9-2a5c-472c-8df2-7ff2be2b3b1b";
$Token = "2336412f37fb687f5d51e6e241d09c805a5a57b30d712f794cc5f6a988666d92768dd60a747ba6f3beb71854e285d6ad02428b09ceece29417f1f02d6";
$TopicArn = "arn:aws:sns:us-east-1:123456789012:MyTopic";
$Message = "You have chosen to subscribe to the topic arn:aws:sns:us-east-1:123456789012:MyTopic.\nTo confirm ";
$SubscribeURL = "https://sns.us-east-1.amazonaws.com/?Action=ConfirmSubscription&TopicArn=arn:aws:sns:us-east-1:123456789012:MyTopic&Token=2336412f37fb6";
$Timestamp = "2012-04-26T20:45:04.751Z";
$SignatureVersion = "1";
$Signature = "EXAMPLEpH+DcEwjAPg8O9mY8dReBSwksfg2S7WKQcikcNKWLQjwu6A4VbeS0QHVCkhRS7fUQvi2egU3N858fiTDN6bkkOxYDVrY0Ad8L10Hs3zH81mtnPk5uvvolIC1CXGu43obcgFxeL3khZl8IKvO61GWB6jI9b5+gLPoBc1Q=";
$SigningCertURL = "https://sns.us-east-1.amazonaws.com/SimpleNotificationService-f3ecfb7224c7233fe7bb5f59f96de52f.pem";);                                                
$json_data = json_encode($data);                                                                            
$ch = curl_init('http://example.com');                                                     
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); 
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, $json_data);                                                               
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  
curl_setopt($ch, CURLOPT_CAINFO, "/path/to/CA.crt");                                                                 
curl_setopt($ch, CURLOPT_HTTPHEADER,array(                                                                 
'Content-Type: application/json',                                                                       
'Content-Length: ' . strlen($json_data))                                                                      
);
$output = curl_exec($ch);
$result = json_decode($output);
echo $result;
?>

2.PHP:

如何通过CURL或其他发布方法将1.php json值发布到2.php ..尝试了我最好的..无法找出解决方案。

感谢

1 个答案:

答案 0 :(得分:2)

<强> 1.PHP

$data = array(
    'test' => 'data',
    'new'  => 'array');
$json_data = json_encode($data);    

// Only work with your example, curl need full url
$request_url = 'http://teshdigitalgroup.com/2.php';      

$ch = curl_init($request_url);                                                     
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $json_data);                                                              
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);                                                                      
curl_setopt($ch, CURLOPT_HTTPHEADER, array(                                                                          
    'Content-Type: application/json',                                                                                
    'Content-Length: ' . strlen($json_data))                                                                       
);     
$output = curl_exec($ch);
print_r($output);

AND 2.php

print_r(file_get_contents('php://input'));

// Response 1.php's request HTTP Header
function parseRequestHeaders() {
    $headers = array();
    foreach($_SERVER as $key => $value) {
        if (substr($key, 0, 5) <> 'HTTP_') {
            continue;
        }
        $header = str_replace(' ', '-', ucwords(str_replace('_', ' ', strtolower(substr($key, 5)))));
        $headers[$header] = $value;
    }
    return $headers;
}

print_r(parseRequestHeaders());