使用PHP和RESTful API获取和发送文件

时间:2016-02-25 15:54:26

标签: php json api http

我的一个合作伙伴有一个API服务,每当发布新文件时都应该发送HTTP POST请求。这需要我有一个api文件,这将以这种方式获得POST:

(defn atomic-apache-peak-value [x]
  (let [lamb ((x :parameters) 0)
        x0 ((x :parameters) 1)
        f (D2Sigmoid. lamb x0)
        optimizer (BrentOptimizer. 0.0001 0.0001)
        maxeval (MaxEval. 1000)
        of (UnivariateObjectiveFunction. f)
        goal GoalType/MINIMIZE
        interval (SearchInterval. x0 (* 2 x0))]
    (-> (.optimize optimizer (into-array OptimizationData [maxeval of goal interval]))
        (.getPoint))))

并请求JSON格式请求应为:

http://myip:port/api/ReciveFile

同时它应该以JSON格式发出响应,如果它有文件

{
    "FILE ":"filename.zip",
    "FILE_ID":"123",
    "FILE_DESC":"PRUPOUS_FILE",
    "EXTRAVAR":"",
    "EXTRAVAR2":"",
    "USERID":" xxxxxxxxxxxx",
    "PASSWORD":"yyyyyyyyyyy"
}

之后,当我完成文件的详细说明后,我应该以同样的方式发送修改后的文件。

问题是,现在基本上从我的理解,他将向我发送我必须阅读的变量,下载文件,然后发送回复。

我不确定如何做到这一点欢迎任何示例代码!

1 个答案:

答案 0 :(得分:0)

我不确定问题究竟是什么,但如果你的意思是在JSON中创建一个成功响应,如果在向其添加数据时发生了一个动作,这可以从问题中理解,只需创建一个数组即可。您希望发送回提供程序的值,并在数组上执行json_encode,该数组应创建json并将其作为响应打印回来。

关于接收信息;您所要做的就是使用集成的curl函数或使用包装器(Guzzle等)将原始JSON或json_decode数据输出到变量中并随意执行任何操作。

从我在问题中看到的内容,您希望修改它的内容。这可以通过解码json并更改数组中的变量,然后将修改后的JSON作为响应打印来实现。

示例(以GuzzleHTTP为例):

$res = $client->request('GET', 'url');
$json = $res->getBody();
$array = json_decode($json, 1); // decode the json
// Start modifying the values or adding
$array['value_to_modify'] = $whatever;
$filename = $array['filename']; // get filename
// make a new request
$res = $client->request('GET', 'url/'.$filename);
// get the body of specified filename
$body = $res->getBody();
// Return the array.
echo json_encode($body);

参考文献:

http://docs.guzzlephp.org/en/latest/