本文介绍了Retrofit-IllegalArgumentException:意外的 url的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想使用 Retrofit 将视频文件(从图库中选择)上传到服务器.但它不起作用并抛出异常java.lang.IllegalArgumentException:意外的网址:192.168.1.7".我的代码如下所示.PostFile.java
:
I want to upload a video file (chosen from gallery) to a server using Retrofit. But it doesn't work and throws the exception "java.lang.IllegalArgumentException: unexpected url: 192.168.1.7". My code is presented below.PostFile.java
:
public final class PostFile {
public static final MediaType MEDIA_TYPE_MARKDOWN
= MediaType.parse("vide/mp4");
private final OkHttpClient client = new OkHttpClient();
public void run(String path) throws Exception {
File file = new File(path);
Request request = new Request.Builder()
.url("192.168.1.7/")
.post(RequestBody.create(MEDIA_TYPE_MARKDOWN, file))
.build();
Response response = client.newCall(request).execute();
if (!response.isSuccessful()) throw new IOException("Unexpected code " + response);
System.out.println(response.body().string());
}
}
PostFile
:
public class MainActivity extends Activity {
private static int RESULT_LOAD_IMG = 1;
String decodableString;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void loadImagefromGallery(View view) {
// Create intent to Open Image applications like Gallery, Google Photos
Intent galleryIntent = new Intent(Intent.ACTION_PICK,
android.provider.MediaStore.Video.Media.EXTERNAL_CONTENT_URI);
// Start the Intent
startActivityForResult(galleryIntent, RESULT_LOAD_IMG);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
try {
// When an Image is picked
if (requestCode == RESULT_LOAD_IMG && resultCode == RESULT_OK
&& null != data) {
// Get the Image from data
Uri selectedVideo = data.getData();
String[] filePathColumn = { MediaStore.Video.Media.DATA };
// Get the cursor
Cursor cursor = getContentResolver().query(selectedVideo,
filePathColumn, null, null, null);
// Move to first row
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
decodableString = cursor.getString(columnIndex);
cursor.close();
new PostFile().run(decodableString);
Log.i("mohsen","done");
} else {
Toast.makeText(this, "You haven't picked any video",
Toast.LENGTH_LONG).show();
}
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(this, "Something went wrong", Toast.LENGTH_LONG)
.show();
}
}
}
Wampserver 在我的计算机上运行 Apache Server 2.4.4.请注意,我不知道这段代码是否合理,我只是试图让它几乎盲目地工作.
Wampserver is running Apache Server 2.4.4 on my computer.Please note that I have no idea whether this code is sound or not, and I'm just trying to make it work almost blindly.
推荐答案
尝试改变
.url("192.168.1.7/")
到
.url("http://192.168.1.7")
这篇关于Retrofit-IllegalArgumentException:意外的 url的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!