【问题标题】:PHP Curl Request - Diawi APIPHP 卷曲请求 - Diawi API
【发布时间】:2016-07-26 15:28:00
【问题描述】:

我正在努力让我的 Curl 请求正常工作。该代码的目的是使用他们的 API 将文件上传到 diawi.com。这是我第一次尝试使用 curl,我不确定语法是否正确。

这是我的代码:

$curl = curl_init();

curl_setopt_array($curl, array(
    CURLOPT_RETURNTRANSFER => 1,
    CURLOPT_URL => 'https://upload.diawi.com/',
    CURLOPT_HTTPHEADER => array(
        "cache-control: no-cache",
        "content-type: multipart/form-data"
    ),
    CURLOPT_USERAGENT => 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.2 (KHTML, like Gecko) Chrome/22.0.1216.0 Safari/537.2',
    CURLOPT_POST => 1,
    CURLOPT_POSTFIELDS => array(
        token => 'token',
        file => 'http://example.com/apps/myapp.ipa',
        find_by_udid => 0,
        wall_of_apps => 0,
        callback_url => 'http://www.example.com/apps/diawi_response.php',
        callback_email => 'me@company.com'
    )
));

$resp = curl_exec($curl);
curl_close($curl);
echo $resp;

目前我得到的响应是“没有上传文件”。

这是文档中的示例请求:

$ curl https://upload.diawi.com/ -F token='TOKEN' \
-F file=@MyApp.ipa \
-F find_by_udid=0 \
-F wall_of_apps=1 \
-F password='installation password' \
-F comment='Comment on the build' \
-F callback_url='http://www.example.com/my-diawi-callback-url' \
-F callback_email='me@company.com'

您能给我的任何帮助将不胜感激。

测试令牌:MrdS5g9MpZhKn8jlJNuANRlmPuSBkBxWX1LTIptn8p

测试文件:http://defu.se/ESFileExplorer.apk

【问题讨论】:

    标签: php curl diawi


    【解决方案1】:

    使用此来源。

    <?php
        ini_set('display_errors', 1);
        $url = "https://upload.diawi.com/"; 
        $filename = realpath('./ESFileExplorer.apk');
        if ($filename != '')
        {
            $headers = array("Content-Type: multipart/form-data"); // cURL headers for file uploading
            $postfields = array(
                "token"             => 'YOUR-TOKEN',
                "file"              => new CurlFile( $filename ),
                "find_by_udid"      => 0,
                "wall_of_apps"      => 1,
                "callback_email"    => 'xxxxx@gmail.com'
                );
            $ch = curl_init();
            $options = array(
                CURLOPT_URL => $url,
                CURLOPT_HEADER => true,
                CURLOPT_POST => 1,
                CURLOPT_HTTPHEADER => $headers,
                CURLOPT_POSTFIELDS => $postfields,
                CURLOPT_USERAGENT => 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:47.0) Gecko/20100101 Firefox/47.0'
            ); // cURL options
            curl_setopt_array($ch, $options);
            curl_exec($ch);
            if(!curl_errno($ch))
            {
                // echo $ch;
                $info = curl_getinfo($ch);
                if ($info['http_code'] == 200)
                    $errmsg = "File uploaded successfully";
                // print_r($info);
            }
            else
            {
                $errmsg = curl_error($ch);
            }
            curl_close($ch);
        }
        else
        {
            $errmsg = "Please select the file";
        }
        echo $errmsg;
    ?>
    

    我得到的结果

    HTTP/1.1 100 继续 HTTP/1.1 200 OK 服务器:nginx 内容类型:application/json 传输编码:chunked 连接:keep-alive 变化:Accept-Encoding 缓存控制:无缓存 日期:周二,26 2016 年 7 月 19:40:33 GMT Strict-Transport-Security: max-age=15768000 {"job":"U37Nq7ta3Q711AsbvYrODFfvTLoyNwY4XslCFI7oV0"}文件上传成功

    【讨论】:

    • 嘿伙计,抱歉我的回复延迟!我在问题的底部添加了一个令牌和一个用于测试的文件。
    • @d.abyss 你能把文件的链接发给我吗?
    • @d.abyss 嗨,兄弟。我已经更新了我的答案。现在工作。 xD
    • 得到了正确的回应! :) 我注意到响应不包含链接-在第一次查询成功时需要查询$ curl -vvv 'https://upload.diawi.com/status?token=TOKEN&amp;job=identifierOfYourUploadJob'。标识符来自我们在这里得到的第一个响应。
    • 嗨,是的,我确实完成了。第二个查询使用 GET 并且要简单得多。
    猜你喜欢
    • 1970-01-01
    • 2011-04-23
    • 2014-08-21
    • 2018-04-08
    • 2011-09-16
    • 1970-01-01
    • 2018-09-20
    • 2019-01-27
    • 1970-01-01
    相关资源
    最近更新 更多