将文件从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(); 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()); } }将文件从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()
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);