2015-11-12 5 views
7

Я хочу загрузить видеофайл (выбранный из галереи) на сервер с помощью Retrofit. Но это не работает и выдает исключение «java.lang.IllegalArgumentException: неожиданный url: 192.168.1.7». Мой код представлен ниже.
PostFile.java:Retrofit-IllegalArgumentException: неожиданный url

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 2.4.4 на моем компьютере. Обратите внимание, что я не знаю, является ли этот код звуковым или нет, и я просто пытаюсь заставить его работать почти слепо.

ответ

10

изменение Try

.url("192.168.1.7/") 

в

.url("http://192.168.1.7") 
3

изменить свой адрес в http://192.168.1.7. Он должен работать отлично.

+1

Спасибо, что ответили на мой вопрос, но я просто поддержал ваш ответ и принял другой, чтобы дать ответ на несколько секунд раньше. Еще раз спасибо. – mok