【问题标题】:Java http file upload and server responseJava http 文件上传和服务器响应
【发布时间】:2016-02-04 16:13:40
【问题描述】:

我一直在尝试开发一个桌面 java 应用程序,它可以将图像从本地硬盘上传到我的网站,并获取在 PHP 中为该图像动态创建的页面的 URL。我遇到了可以发送 POST 请求的 HttpClient,但是有很多不推荐使用的类,除了 HTTP 状态代码之外,我还没有看到如何从服务器获取一些信息。我不熟悉并且真正想避免的第二种方法是在 JAVA 中重建服务器端。

对于通过上传表单(在 PHP 中处理)上传文件并将一些信息(如图像的新 URL)返回到 JAVA 应用程序,哪种方法是最简单的解决方案?

【问题讨论】:

  • 其实,不管你在服务器端使用哪种技术,你都会交换字节。您可以在客户端中使用 Retrofit 轻松地将文件发送到您的服务器。
  • 它看起来像一个简单的库。是否有任何关于从服务器获取响应的详细文档,例如上传图像的 URL 等

标签: java httpclient apache-httpclient-4.x


【解决方案1】:

您可以很容易地读取 POST 请求的响应(假设您已经通过 POST 将文件上传到服务器 - 如果没有,请查看 How to upload a file using Java HttpClient library working with PHP,但我在此处复制了关键行):

DefaultHttpClient httpclient = new DefaultHttpClient();
HttpPost post = new HttpPost(url);
File file = new File("c:/TRASH/zaba_1.jpg");
FileEntity reqEntity = new FileEntity(file, "binary/octet-stream");
reqEntity.setContentType("binary/octet-stream");
post.setEntity(reqEntity);
HttpResponse response = httpclient.execute(post);
HttpEntity entity = response.getEntity();
Log.d("INFO", "rcode:" + response.getStatusLine().toString());
if (response.getStatusLine().getStatusCode() - 200 >= 100)
     throw new Exception("bad status code: " + response.getStatusLine().getStatusCode());
String responseString = EntityUtils.toString(entity);

哦,顺便说一句,这是使用

 import org.apache.http.HttpEntity;
 import org.apache.http.HttpResponse;
 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;

【讨论】:

  • 您能否更详细地解释一下 dict 中存储的内容?
  • 在您的情况下,您应该已经在 POST 中上传图像,因此您应该已经拥有 HttpResponse response = httpclient.execute(post); 之前的所有内容。之后你可以使用我的代码读取服务器发送的响应来解析返回的 URL。
  • 我添加了一些与上传文件和链接相关的代码
  • 谢谢你的回答,现在更清楚了。但还有一件事困扰着我。在服务器端,我应该以某种方式将服务器所需的相关信息放在 JSON 对象中,并且应该在 dict 变量中可用,对吗?
  • 不,在服务器端,您应该将您希望客户端访问的 url 放入响应中。客户端然后将在responseString 中可用
猜你喜欢
  • 2021-04-14
  • 1970-01-01
  • 1970-01-01
  • 2011-01-28
  • 2012-08-05
  • 1970-01-01
  • 1970-01-01
  • 2014-06-20
  • 1970-01-01
相关资源
最近更新 更多