0

JSONデータをURLに送信するスクリプトを作成しました

$data   =   array();

$key        =   'mysecretkey';
$string     =   'teststring';

$data['date']               =   '2013-06-19 05:38:00';
$data['encrypted_string']   =   mcrypt_encode($string,$key);
$data['id']                 =   231;
$data['source_ref']         =   'testreference';
$data['status']             =   'Active';

header('Content-type: text/json');
header('Content-type: application/json');

$url = 'http://localhost/myproject/test/add_json_data'; 

$json_string    =   json_encode($data);

$ch = curl_init( $url );
curl_setopt( $ch, CURLOPT_POST, 1);
curl_setopt( $ch, CURLOPT_POSTFIELDS,$json_string);
curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt( $ch, CURLOPT_HEADER, 0);
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1);

$response = curl_exec( $ch );   

mcrypt_encode文字列をエンコードします。ここにjson_stringがあります

{
  "date": "2013-06-19 05:38:00",
  "encrypted_string": "7Y4jqgIfhj25ghsF8yJ/qTtzXafTtIlwsz7xWIDVWJGoF22X2JbfSWfQtgmI1dYyyJDgs3nmaWctTEgKW5VmHw==",
  "id": 231,
  "source_ref": "testreference",
  "status": "Active"
}   

スクリプトを実行しても、指定した URL では何も起こりません。

これが私がURLでやっていることです。

function add_json_data()
{
    $json   =   file_get_contents('php://input');

    $obj        =   json_decode($json);

    $this->load->helper('file');
    write_file('json.json',$json);      
}   

私はcodeigniterを使用しているので、投稿データをjson形式のファイルに保存して、何が来るかを確認しています。しかし、URLが呼び出されていないことがわかります。エンコードされた文字列を含むエンコードされたjson文字列が原因で、データをurlに送信していないと思います。エンコードされたキーを URL に送信するにはどうすればよいですか。encrypted_stringまた、何か「テスト」に置き換えるかどうかも確認しましたが、正常に動作しています。URLまたは代替手段にデータを送信するにはどうすればよいですか? 助けてください。

4

2 に答える 2

0

私はこれに対する答えを見つけました。これが私がこれを行う方法です

$data   =   array();

$key        =   'mysecretkey';
$string     =   'teststring';

$data['date']               =   '2013-06-19 05:38:00';
$data['encrypted_string']   =   mcrypt_encode($string,$key);
$data['id']                 =   231;
$data['source_ref']         =   'testreference';
$data['status']             =   'Active';

$url = 'http://localhost/myproject/test/add_json_data'; 

$json_string    =   json_encode($data);

$header[]   =   'Content-type: text/json';
$header[]   =   'Content-type: application/json';
$header[]   =   'Content-Length: '.strlen($json_string);

$ch = curl_init( $url );
curl_setopt( $ch, CURLOPT_POST, 1);
curl_setopt( $ch, CURLOPT_POSTFIELDS,$json_string);
curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt( $ch, CURLOPT_HTTPHEADER,$header);
curl_setopt( $ch, CURLOPT_HEADER, 0);
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1);

$response = curl_exec( $ch );   

ヘッダー配列を設定し、それをオプションとして curl に渡すと、正常に動作します。

于 2013-06-20T07:00:19.127 に答える
0

コードを開発するときは常にオンにerror_reportingしてください。そうしないと、最も単純な構文エラーが目を見張るようなバグのように見えます。

この線:

$string     =   'teststring'

セミコロンがありません。

于 2013-06-19T15:26:18.703 に答える