使用httpurlconnection发布POST:更好的方法吗?

时间:2015-05-22 16:14:52

标签: android http post

Android现在建议将HttpUrlConnection用于http请求。

然而,似乎没有一种很好的方式来发布文件。使用旧的HttpClient库,它非常简单(How do I send a file in Android from a mobile device to server using http?

但是,这似乎是我能为HttpUrlConnection找到的最佳解决方案Sending files using POST with HttpURLConnection

虽然该解决方案有效,但要解决一个非常常见的问题,需要进行大量的重新设计。我觉得必须有更好的方法。我似乎无法找到它。

1 个答案:

答案 0 :(得分:1)

这可能与您要查找的内容有点太不同(因为它不直接使用httpurlconnection),但如果您需要进行一些更改,或者是在你的开发过程中还是早期(或者即使你不是),我建议你研究一下像Retrofit这样的东西来处理你所有的网络内容:http://square.github.io/retrofit/

如果你想这样做,你可以这样做:https://futurestud.io/blog/retrofit-how-to-upload-files/

我在自己的工作中做过类似的事情,但无法真正分享,所以我会复制该文章的部分代码。如您所见,它非常简单。

服务:

@Multipart
@POST("/upload")
void upload(@Part("myfile") TypedFile file,
            @Part("description") String description,
            Callback<String> cb);

提出请求:

FileUpload Service service = ServiceGenerator.createService(FileUpload.class, FileUpload.BASE_URL);
TypedFile typedFile = new TypedFile("multipart/form-data", new File("path/to/your/file"));
String description = "hello, this is description speaking";
service.upload(typedFile, description, new Callback<String>() {
    @Override
    public void success(String s, Response response) {
        Log.e("Upload", "success");
    }

    @Override
    public void failure(RetrofitError error) {
        Log.e("Upload", "error");
    }
});

再次,对不起,如果这不能解决您的具体问题,但我认为它确实解决了您的轮胎重新设计以解决一个非常常见的问题&#34;无论如何,部分。