0

ここに私のちょっとしたphpがあります、なぜ私が$resultそれが生成するURLに行かないのかを理解しようとすると、getまたはpostに基づいて有効なJSON結果が得られます。したがって、私の問題はcURLの使用方法にあると思います。だから私は誰かがこれを引き受ける必要があります。

        //open connection
        $ch = curl_init();
        //set the url, number of POST vars, POST data
        curl_setopt($ch,CURLOPT_URL,$url);
        curl_setopt($ch,CURLOPT_POST,count($params));
        curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string);
        curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);
        //execute post
        $result = curl_exec($ch);           
                    if(!$result)
                    {
                        $error = curl_error($ch); echo $error; return false;
                    }
        //close connection
        curl_close($ch);

        //return json_decode($result);
                    echo $result;

上記の編集されたコード元の投稿から

$error何も報告しません。return json ...をechoに変更して、それが何かを行っているかどうかを確認し、' DisallowedKeyCharactersを出力しました。' 画面上。

編集2

$url = http://domain.com/search
$params = array('q'=>'search,term')

$paramsを構築するforeachループを通過します$fields_string

$fields_string = '?';
foreach($params as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
$fields_string = substr($fields_string,0,-1);

fields_stringは最終的には次のよう?ll=37.2790669,-121.874722&range=10になります(私が現在行っていることについては、渡すことができる1〜12のオプションのパラメーターがあります。そのため、私はそれを自分のやり方で構築しています。

4

2 に答える 2

1

エラーチェックを追加してcurl_exec、正常に実行されていることを確認し、サーバーに意味のあるエラーメッセージを返すようにしてください。

何かのようなもの:

    $ch = curl_init();
    //Make string url safe with urlencode
    curl_setopt($ch,CURLOPT_URL,urlencode($url));
    curl_setopt($ch,CURLOPT_POST,count($params));
    curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string);
    curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);
    $result = curl_exec($ch);
    if(!$result) {
        $error = curl_error();
        //$error now contains the error thrown when curl_exec failed to execute
        //echo this to terminal or to an error box in the browser?
    }
    curl_close($ch);

    return json_decode($result);

それでもヘルプが必要な場合は、結果のエラーをここに投稿してください。また、私が利用した2つの機能のマニュアルページは次のとおりです。

http://www.php.net/manual/en/function.curl-error.php

http://www.php.net/manual/en/function.curl-exec.php

http://php.net/manual/en/function.urlencode.php

-乾杯

于 2012-07-11T03:57:44.550 に答える
1
//set POST variables
$url = "http://example.com/edsym/registration.php"; // URL to calc.cgi
$fields = array(
'namee'=>urlencode($name),
'city'=>urlencode($city),
'phh'=>urlencode($ph),
'emaill'=>urlencode($email),
'msg1'=>urlencode("Message type")
                );
$fields_string=" ";
//url-ify the data for the POST
foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
rtrim($fields_string,'&');

//open connection
$ch = curl_init();

//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_POST,count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string);

//execute post
$result = curl_exec($ch);

//close connection
curl_close($ch);

私はこのように投稿するためにcurlを使用しています

于 2012-07-11T05:17:17.740 に答える