很多用戶有需求刷新CDN緩存接口的需求,七牛這邊提供了具體的刷新的接口,可以參考:
http://7xofkx.com5.z0.glb.clouddn.com/%E4%B8%83%E7%89%9BCDN%E5%88%B7%E6%96%B0%E6%8E%A5%E5%8F%A3V2.pdf
這裏提供一個JAVA生成訪問憑證、發送POST請求以及curl模擬POST請求的示例:
以下是使用HttpClient發送POST請求的例子,當然也可以用okhttp來發送請求:
package com.dxy.demo;
import java.io.IOException;
import java.nio.charset.Charset;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import com.qiniu.api.auth.digest.Mac;
import com.qiniu.api.config.Config;
public class QiniuUpload {
public static void main(String[] args) throws Exception{
Config.ACCESS_KEY = "xxxxxx";
Config.SECRET_KEY = "xxxxxx";
Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);
String signingStr = "/refresh\n";
String access_token = auth.sign(signingStr);
System.out.println(access_token);
String url = "http://fusion.qiniuapi.com/refresh";
HttpClient client = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
httpPost.addHeader("Authorization", "QBox "+access_token);
httpPost.addHeader("Content-Type", "application/json");
String param = "{\"urls\":[\"http://xxx.com2.z0.glb.qiniucdn.com/123.txt\"]}";
StringEntity entity = new StringEntity(param, Config.CHARSET);
httpPost.setEntity(entity);
HttpResponse response;
try {
response= client.execute(httpPost);
if (response.getStatusLine().getStatusCode()==HttpStatus.SC_OK){
String content = EntityUtils.toString(response.getEntity());
System.out.println(content);
}else{
System.out.println("failed "+response.toString());
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
可以看到返回的成功信息截圖如下:
另外得到刷新憑證後也可以使用curl來模擬發送POST請求,具體命令如下:
curl -X POST "http://fusion.qiniuapi.com/refresh" -H "Authorization:QBox xxxxxxxxxxxxxx:FfoeL:RNSUeUBGKDiZPdBpSdRnVrJHGhw=" -H "Content-Type: application/json" -d '{"urls":["http://7xl4cg.com2.z0.glb.qiniucdn.com/123.txt"]}'
返回的成功的截圖如下:
另外,對於sdk6xx的用戶,刷新的方法也是一樣的,只是生成刷新token的方法不一樣,具體生成token的方法的代碼如下:
public static void main(String[] args) throws Exception{
Config.ACCESS_KEY = "xxxxx";
Config.SECRET_KEY = "xxxxx";
Mac mac = new Mac(Config.ACCESS_KEY, Config.SECRET_KEY);
String signingStr = "/refresh\n";
String access_token = mac.sign(signingStr.getBytes(Charset.forName("utf-8")));
System.out.println(access_token);
}