将文件从java客户端上载到apache http服务器

将文件从java客户端上载到apache http服务器,java,apache,http,Java,Apache,Http,我试图使用ApacheHttpClient api将一个“myfile.txt”文件作为“upload.txt”上传到apache服务器(WAMP)中,但我得到了“404NotFound”状态 公共类Httpupload1{ 公共静态void main(字符串[]args)引发异常 { 字符串url=”http://username:password@localhost/upload.txt”; DefaultHttpClient httpclient=新的DefaultHttpClient()

我试图使用ApacheHttpClient api将一个“myfile.txt”文件作为“upload.txt”上传到apache服务器(WAMP)中,但我得到了“404NotFound”状态

公共类Httpupload1{ 公共静态void main(字符串[]args)引发异常 { 字符串url=”http://username:password@localhost/upload.txt”; DefaultHttpClient httpclient=新的DefaultHttpClient(); HttpPost HttpPost=新的HttpPost(url); 多方实体=新多方实体(); ContentBody=newfilebody( 新文件(“C:/Users/username/Desktop/myfile.txt”), ContentType.APPLICATION\u八位字节\u流 ); 实体.addPart(“文件”,正文); httppost.setEntity(实体); HttpResponse response=httpclient.execute(httppost); System.out.println(response.getStatusLine()); } }
DefaultHttpClient和AndroidHttpClient摘要URL都不像用户:password@... 相反,您需要使用B64编码,以便将凭据传输到apache服务器

要做到这一点,请尝试一下

     public String getB64Auth (String login, String pass) {
       String source=login+":"+pass;
       String auth="Basic "+android.util.Base64.encodeToString(source.getBytes(),android.util.Base64.URL_SAFE|Base64.NO_WRAP);
       return auth;
     }
然后必须将结果字符串添加到HttpPost对象中

String auth = getB64Auth("username","password");
HttpPost postRequest = new HttpPost(URL);
postRequest.addHeader("Authorization",auth);
您还需要一些东西(比如php脚本)来接受服务器端的数据。我怀疑“uploaded.txt”能做到这一点。。。 此脚本还负责处理、命名和保存收到的文件。例如,您可以使用添加到MultiPartEntity的StringBody来传递用于在服务器端保存文件的名称


有关更多信息,请参阅

我发现您显示的URL不太可能与任何可以接受和处理文件上载的内容相关。@BrianRoach您能告诉我如何发送请求吗?即使没有用户名:password,它也无法工作。正如@BrianRoach所说,我认为服务器端(PHP代码,…)没有接受上传。这里只有客户端。WAMP并不是开箱即用的,我没有php脚本。我只需要将一些文件从客户端复制到服务器。
String auth = getB64Auth("username","password");
HttpPost postRequest = new HttpPost(URL);
postRequest.addHeader("Authorization",auth);