httpclient for java 测试 openstack swift

package org.apache.http.examples.conn;


import java.io.File;
import java.io.InputStream;
import org.apache.http.Header;
import org.apache.http.HttpEntity;
import org.apache.http.HttpHost;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpHead;
import org.apache.http.client.methods.HttpPut;
import org.apache.http.entity.FileEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import java.io.FileOutputStream;
/**
 * How to send a request directly using {@link HttpClient}.
 *
 * @since 4.0
 */
public class test_m {

    public static void main(String[] args) throws Exception {
        DefaultHttpClient httpclient = new DefaultHttpClient();
        try {
            HttpHost target = new HttpHost("http://127.0.0.1", 8080, "http");
            HttpGet req = new HttpGet("http://127.0.0.1:8080/auth/v1.0");
            req.addHeader("X-Storage-User", "admin:admin");
            req.addHeader("X-Storage-Pass", "admin");            
            System.out.println("executing request to " + target);

            //HttpResponse rsp = httpclient.execute(target, req);
            HttpResponse rsp = httpclient.execute( req);
            HttpEntity entity = rsp.getEntity();

            System.out.println("----------------------------------------");
            System.out.println(rsp.getStatusLine());
            Header[] headers = rsp.getAllHeaders();
            for (int i = 0; i < headers.length; i++) {
                System.out.println(headers[i]);
            }
            System.out.println("----------------------------------------");

            if (entity != null) {
                System.out.println(EntityUtils.toString(entity));
            }
            Header h1=rsp.getFirstHeader("X-Storage-Url");
            Header h2=rsp.getFirstHeader("X-Auth-Token");
            System.out.println(h1.getValue()+h2.getValue());
            //test head method
            HttpHead hph=new HttpHead(h1.getValue());
            hph.addHeader(h2);
            rsp=httpclient.execute(hph);
            entity=rsp.getEntity();
            System.out.println("----------------------------------------");
            System.out.println(rsp.getStatusLine());
            headers=null;
            headers = rsp.getAllHeaders();
            for (int i = 0; i < headers.length; i++) {
                System.out.println(headers[i]);
            }
            System.out.println("----------------------------------------");
            //test put method
            HttpPut hpp=new HttpPut(h1.getValue()+"/photos5");
            hpp.addHeader(h2);
            rsp=httpclient.execute(hpp);
            entity=rsp.getEntity();
            System.out.println("----------------------------------------");
            System.out.println(rsp.getStatusLine());
            headers=null;
            headers = rsp.getAllHeaders();
            for (int i = 0; i < headers.length; i++) {
                System.out.println(headers[i]);
            }
            System.out.println("----------------------------------------");
            //put file
/*test put file
            HttpPut httppost = new HttpPut(h1.getValue()+"/photos1/lzl.jpg");
            httppost.addHeader(h2);
            httppost.addHeader("Content-Type","image/jpeg");
            httppost.addHeader("X-Object-Meta-lzl", "一张关于林志玲的美图");
            File file = new File("/home/ralph/cute.jpg");
            InputStreamEntity reqEntity = new InputStreamEntity(
                    new FileInputStream(file), -1);
            reqEntity.setContentType("binary/octet-stream");
            reqEntity.setChunked(true);
            // It may be more appropriate to use FileEntity class in this particular
            // instance but we are using a more generic InputStreamEntity to demonstrate
            // the capability to stream out data from any arbitrary source
            //
            // FileEntity entity = new FileEntity(file, "binary/octet-stream");

            httppost.setEntity(reqEntity);

            System.out.println("executing request " + httppost.getRequestLine());
            rsp = httpclient.execute(httppost);
//end test put file            
         */   
/*            FileBody file = new FileBody(new File("/home/ralph/cute.jpg"));
            MultipartEntity ef = new MultipartEntity();
            ef.addPart("file", file);  
            HttpPut httppost = new HttpPut(h1.getValue()+"/photos1/lzl.jpg");
           // httppost.setHeader("Content-Type","image/jpeg");
            httppost.addHeader(h2);
           // httppost.addHeader("X-Object-Meta-lzl", "一张关于林志玲的美图");
            httppost.setEntity(ef);
            rsp=httpclient.execute(httppost);*/
            File file = new File("/home/ralph/cute.jpg");
            //File file = new File("/home/ralph/test.txt");
            FileEntity entity1 = new FileEntity(file, "text/plain; charset=\"UTF-8\"");

            HttpPut httppost = new HttpPut(h1.getValue()+"/photos5/lzl.jpg");
            //HttpPut httppost = new HttpPut(h1.getValue()+"/photos5/lzl.txt");
            httppost.setHeader(h2);
            httppost.setHeader("Content-Type","image/jpeg");
            //httppost.setHeader("Content-Type","text/plain; charset=\"UTF-8\"");
            httppost.setHeader("X-Object-Meta-lzl", "一张关于林志玲的美图");
            httppost.setEntity(entity1);
            DefaultHttpClient httpclient1 = new DefaultHttpClient();
            rsp=httpclient1.execute(httppost);
          
        ///    
         
            entity=rsp.getEntity();
            System.out.println("----------------------------------------");
            System.out.println(rsp.getStatusLine());
            headers=null;
            headers = rsp.getAllHeaders();
            for (int i = 0; i < headers.length; i++) {
                System.out.println(headers[i]);
            }
            System.out.println("----------------------------------------");   
            //download file
            HttpGet httpget = new HttpGet(h1.getValue()+"/photos5/lzl.jpg");
            httpget.addHeader(h2);
            DefaultHttpClient httpclient2 = new DefaultHttpClient();
            HttpResponse response = httpclient2.execute(httpget);  
            if(HttpStatus.SC_OK==response.getStatusLine().getStatusCode()){  
                //请求成功  
                //取得请求内容  
                entity = response.getEntity();  
                //显示内容  
                if (entity != null) {  
                    //这里可以得到文件的类型 如image/jpg /zip /tiff 等等 但是发现并不是十分有效,有时明明后缀是.rar但是取到的是null,这点特别说明  
                    System.out.println(entity.getContentType());  
                    //可以判断是否是文件数据流  
                    System.out.println(entity.isStreaming());  
                    //设置本地保存的文件  
                    File storeFile = new File("/home/ralph/cute1.jpg");    
                    FileOutputStream output = new FileOutputStream(storeFile);  
                    //得到网络资源并写入文件  
                    InputStream input = entity.getContent();  
                    byte b[] = new byte[1024];  
                    int j = 0;  
                    while( (j = input.read(b))!=-1){  
                        output.write(b,0,j);  
                    }  
                    output.flush();  
                    output.close();   
                }  
                if (entity != null) {  
                    entity.consumeContent();  
                }
            }
            //end download file

        } finally {
            // When HttpClient instance is no longer needed,
            // shut down the connection manager to ensure
            // immediate deallocation of all system resources
            httpclient.getConnectionManager().shutdown();
        }
    }

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值