Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用多部分Post方法改装错误代码404_Java_Android_Retrofit - Fatal编程技术网

Java 使用多部分Post方法改装错误代码404

Java 使用多部分Post方法改装错误代码404,java,android,retrofit,Java,Android,Retrofit,我想上传两个视频和一些文本字段到改装库 使用Multipart Post方法,如何使用android改装库发送值 API接口 @Headers({"Accept: application/json"}) @Multipart @POST("event") Call<ResponsePojo> submitData(@Part MultipartBody.Part video, @Part("

我想上传两个视频和一些文本字段到改装库 使用Multipart Post方法,如何使用android改装库发送值

API接口

 @Headers({"Accept: application/json"})
    @Multipart
    @POST("event")
    Call<ResponsePojo> submitData(@Part MultipartBody.Part video,
                                  @Part("device_id") String device_id,
                                  @Part("lat") String lat,
                                  @Part("lng") String lng,
                                  @Part("speed") String speed,
                                  @Part("event_type") String event_type,
                                  @Part MultipartBody.Part videolarge);
下面的发送按钮点击方法,当我点击时上传所有数据保存到服务器

 OkHttpClient client = new OkHttpClient.Builder()
            .connectTimeout(100, TimeUnit.SECONDS)
            .readTimeout(100,TimeUnit.SECONDS).build();
    Retrofit builder = new Retrofit.Builder()
            .baseUrl(API.BaseUrl).client(client)
            .addConverterFactory(GsonConverterFactory.create(new Gson())).build();


    API api = builder.create(API.class);

    //create file which we want to send to server.
    File videoFIle = new File(String.valueOf(realUri));
    RequestBody requestBody = RequestBody.create(MediaType.parse("multipart/form-data"), videoFIle);
    MultipartBody.Part image = MultipartBody.Part.createFormData("fileData", videoFIle.getName(), requestBody);

    Call<ResponsePojo> call = api.submitData(image, "1, ", "4.667566", "54.54448", "5457", "2",image);

    call.enqueue(new Callback<ResponsePojo>() {
        @Override
        public void onResponse(Call<ResponsePojo> call, Response<ResponsePojo> response) {
            ResponsePojo body = response.body();
            Toast.makeText(getApplicationContext(), String.valueOf("Code "+response.message()), Toast.LENGTH_SHORT).show();
            pd.dismiss();
        }

        @Override
        public void onFailure(Call<ResponsePojo> call, Throwable t) {
            Toast.makeText(getApplicationContext(), "File "+t.toString(), Toast.LENGTH_SHORT).show();
            pd.dismiss();
        }
    });
OkHttpClient=new OkHttpClient.Builder()
.connectTimeout(100,时间单位为秒)
.readTimeout(100,TimeUnit.SECONDS).build();
改装生成器=新改装.builder()
.baseUrl(API.baseUrl).client(客户端)
.addConverterFactory(GsonConverterFactory.create(new Gson()).build();
API=builder.create(API.class);
//创建要发送到服务器的文件。
File videoFIle=新文件(String.valueOf(realUri));
RequestBody RequestBody=RequestBody.create(MediaType.parse(“多部分/表单数据”),videoFIle);
MultipartBody.Part image=MultipartBody.Part.createFormData(“fileData”,videoFIle.getName(),requestBody);
Call Call=api.submitData(图像,“1”,“4.667566”,“54.54448”,“5457”,“2”,图像);
call.enqueue(新回调(){
@凌驾
公共void onResponse(调用、响应){
ResponsePojo body=response.body();
Toast.makeText(getApplicationContext(),String.valueOf(“Code”+response.message()),Toast.LENGTH\u SHORT.show();
pd.解散();
}
@凌驾
失败时公共无效(调用调用,可丢弃的t){
Toast.makeText(getApplicationContext(),“File”+t.toString(),Toast.LENGTH_SHORT).show();
pd.解散();
}
});

在某些情况下,此错误基本上与路径(@path)有关。所以请像@path(“/event”)一样检查您的请求路径

根据响应代码,客户端能够与给定的服务器通信,但服务器找不到请求的内容


所以,在这种情况下,我们应该检查路径和参数我们发送的是什么。

对于这个实例,404表示这个URL没有API

也许,您的URL需要是
http://192.168.0.105/register/
而不是
http://192.168.0.105/register
或者它的格式不正确。
例如,
http://192.168.0.105//register/

如果您正在使用
@POST
并希望使用
@part
发送数据,则需要先将其转换为
RequestBody
,然后再发送。执行以下更改

输入请求代码

Call<ResponsePojo> submitData(@Part MultipartBody.Part video,
                              @Part("device_id") RequestBody device_id,...
现在,在方法调用中使用上述变量。

是否可以检查并更改可能的重复项
Call<ResponsePojo> submitData(@Part MultipartBody.Part video,
                              @Part("device_id") RequestBody device_id,...
RequestBody device_id = RequestBody.create(
        MediaType.parse("text/plain"),
        device_id);