2016-07-26 13 views
0

https://player.vimeo.com/video/136004191/config пытается принести реальный URL из Vimeo, пока я получаю сообщение об ошибке:Vimeo Получить запрос 405 ответа код ошибки

response code:405 
07-26 11:42:46.236 22054-22183/com.sample.samplevideoview W/System.err: java.io.FileNotFoundException: https://player.vimeo.com/video/136004191/config 
07-26 11:42:46.236 22054-22183/com.sample.samplevideoview W/System.err:  at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:238) 
07-26 11:42:46.236 22054-22183/com.sample.samplevideoview W/System.err:  at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getInputStream(DelegatingHttpsURLConnection.java:210) 
07-26 11:42:46.236 22054-22183/com.sample.samplevideoview W/System.err:  at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java) 
07-26 11:42:46.237 22054-22183/com.sample.samplevideoview W/System.err:  at com.sample.samplevideoview.AsyncHttpClient$AsyncDataRequestHideDialog.doInBackground(AsyncHttpClient.java:353) 
07-26 11:42:46.237 22054-22183/com.sample.samplevideoview W/System.err:  at com.sample.samplevideoview.AsyncHttpClient$AsyncDataRequestHideDialog.doInBackground(AsyncHttpClient.java:287) 
07-26 11:42:46.237 22054-22183/com.sample.samplevideoview W/System.err:  at android.os.AsyncTask$2.call(AsyncTask.java:295) 
07-26 11:42:46.237 22054-22183/com.sample.samplevideoview W/System.err:  at java.util.concurrent.FutureTask.run(FutureTask.java:237) 
07-26 11:42:46.237 22054-22183/com.sample.samplevideoview W/System.err:  at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234) 
07-26 11:42:46.237 22054-22183/com.sample.samplevideoview W/System.err:  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) 
07-26 11:42:46.237 22054-22183/com.sample.samplevideoview W/System.err:  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) 
07-26 11:42:46.237 22054-22183/com.sample.samplevideoview W/System.err:  at java.lang.Thread.run(Thread.java:818) 
07-26 11:42:46.281 22054-22054/com.sample.samplevideoview E/MainActivity: Must implement the interface java.lang.NullPointerException: Attempt to invoke virtual method 'com.sample.samplevideoview.Request com.sample.samplevideoview.VimeoResponse.getRequest()' on a null object reference 

вот код:

private void getRealUrl(String videoId) 
     { 
      AsyncHttpClient mAsyncHttpClient = new AsyncHttpClient(); 
      HashMap<String, String> params = new HashMap<>(); 
      String url = "https://player.vimeo.com/video/" + videoId + "/config"; 

      mAsyncHttpClient.postWithStringData(MainActivity.this, TAG, 
        url, StringConstants.METHOD_GET, params,false, 
        new AsyncHttpClient.AsyncHttpResponseCallBack() { 
         @Override 
         public void onResponse(String response) { 
          Gson gson = new GsonBuilder().create(); 
          VimeoResponse movie = gson.fromJson(response, VimeoResponse.class); 

         } 
        } 
     ); 
     } 
public class AsyncHttpClient { 

    public interface AsyncHttpResponseCallBack { 
     void onResponse(String response); 
    } 

    private Vector<Object> params; 
    private static final String UTF_ENCODING = "UTF-8"; 

    private static final int CONTEXT_INDEX = 0; 
    private static final int TAG_INDEX = 1; 
    private static final int URL_INDEX = 2; 
    private static final int PARAMS_STRING_INDEX = 3; 
    private static final int RESPONSE_CALLBACK_INDEX = 4; 
    private static final int REQUEST_METHOD_INDEX = 5; 
    private static final int SHOW_PROGRESS_DIALOG_INDEX = 6; 
public void postWithStringData(Context context, String TAG, String url, String method, 
            HashMap<String, String> hashMapParams, boolean showDialog, 
            AsyncHttpResponseCallBack asyncHttpResponseCallBack) { 
     if (Utilities.isConnected(context)) { 
      try { 
       params = new Vector<>(); 
       params.insertElementAt(context, CONTEXT_INDEX); 
       params.insertElementAt(TAG, TAG_INDEX); 
       params.insertElementAt(url, URL_INDEX); 
       params.insertElementAt(getPostDataString(hashMapParams), PARAMS_STRING_INDEX); 
       params.insertElementAt(asyncHttpResponseCallBack, RESPONSE_CALLBACK_INDEX); 
       params.insertElementAt(method, REQUEST_METHOD_INDEX); 
       new AsyncDataRequestHideDialog(context).execute(params); 
      } catch (UnsupportedEncodingException e) { 
       e.printStackTrace(); 
      } 
     } 
    } 
private class AsyncDataRequestHideDialog extends AsyncTask<Vector<Object>, Void, String> { 

     AlertDialog mAlert; 
     String TAG, url; 
     String paramsString; 
     AsyncHttpResponseCallBack asyncHttpResponseCallBack; 
     Context context; 

     String method; 
     public AsyncDataRequestHideDialog(Context context) { 
      // TODO Auto-generated constructor stub 
      this.context = context; 
     } 

     @Override 
     protected String doInBackground(Vector<Object>... params) { 
      Vector<Object> requestParams = params[0]; 
      TAG = (String) requestParams.get(TAG_INDEX); 
      url = (String) requestParams.get(URL_INDEX); 
      paramsString = (String) requestParams.get(PARAMS_STRING_INDEX); 
      asyncHttpResponseCallBack = (AsyncHttpResponseCallBack) requestParams.get(RESPONSE_CALLBACK_INDEX); 
      method = (String) requestParams.get(REQUEST_METHOD_INDEX); 

      String result = ""; 
      URL requestURL; 
      StringBuffer response; 

      try { 
       requestURL = new URL(url); 
       HttpURLConnection conn = (HttpURLConnection) requestURL.openConnection(); 
       conn.setReadTimeout(StringConstants.READ_TIMEOUT); 
       conn.setConnectTimeout(StringConstants.CONNECTION_TIMEOUT); 
       conn.setRequestMethod(method); 
       conn.setDoInput(true); 
       conn.setDoOutput(true); 
       OutputStream os = conn.getOutputStream(); 
       BufferedWriter writer = new BufferedWriter(
         new OutputStreamWriter(os, UTF_ENCODING)); 
       writer.write(paramsString); 
       writer.flush(); 
       writer.close(); 
       os.close(); 
       String line; 
       response = new StringBuffer(); 
       Log.d(TAG,"response code:"+conn.getResponseCode()); 
       BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream())); 
       while ((line = br.readLine()) != null) { 
        response.append(line); 
       } 
       result = response.toString(); 
      } catch (SocketTimeoutException e1) { 
       e1.printStackTrace(); 
      } catch (Exception e) { 
       e.printStackTrace(); 

      } finally { 
       Log.d(TAG, result); 
       return result; 
      } 
     } 

     // Overriding onPreExecute to initialize and show progress dialog 
     @Override 
     protected void onPreExecute() { 
      // TODO Auto-generated method stub 
      super.onPreExecute(); 

     } 
     @Override 
     protected void onPostExecute(String result) { 
      // TODO Auto-generated method stub 
      super.onPostExecute(result); 

      // If result is not null 
      if (result != null) { 
       try { 
        // Making a log just to make sure of data. 
        Log.e(TAG, result); 
        asyncHttpResponseCallBack.onResponse(result); 
       } catch (Exception e) { 
        Log.e(TAG, "Must implement the interface " + e.toString()); 
       } 
      } else { 
       mAlert = Utilities.createAlertDialog(context, "Error", 
         StringConstants.DATA_ERROR); 
      } 
     } 
    } 

в то время как я получаю код ответа 405? в чем проблема ? тот же URL-адрес в мобильном и настольном браузере отвечает на меня.

+0

Удостоверьтесь, что метод, принятый по URL-адресу, является GET или это PUSH –

+0

@ GeetChoubey объяснение pls – Erum

+0

откуда я могу найти его GET или PUSH? – Erum

ответ

0

Ваш код кажется проблематичным, поскольку для простого GET запрос строки OutputStream и Buffer Классы вызывали исключение. Попробуйте этот простой код. Хорошо работать на моей стороне.

@Override 
      protected String doInBackground(Vector<Object>... params) { 

       String result = ""; 
       url = "https://player.vimeo.com/video/136004191/config"; 

       try { 

        URL obj = new URL(url); 

        HttpURLConnection con = (HttpURLConnection) obj.openConnection(); 

        // optional default is GET 
        con.setRequestMethod("GET"); 
        BufferedReader in = new BufferedReader(
          new InputStreamReader(con.getInputStream())); 
        String inputLine; 
        StringBuffer response = new StringBuffer(); 

        while ((inputLine = in.readLine()) != null) { 
         response.append(inputLine); 
        } 
        in.close(); 

        //print result 
        System.out.println(response.toString()); 

        result = response.toString(); 
       } catch (SocketTimeoutException e1) { 
        e1.printStackTrace(); 
       } catch (Exception e) { 
        e.printStackTrace(); 

       } finally { 
        Log.d(TAG, result); 
        return result; 
       } 
      } 
1

Я настоятельно рекомендую использовать официальный vimeo-networking Java/Android библиотеки для разговора с API Vimeo.

Библиотека позаботится обо всей сетевой логике (так что вам не понадобится шаблон HttpURLConnection), а также предлагает звонить для получения видео по URI.

Here is how to request a single video. Это по существу выглядит следующим образом:

String uri = ...;// the video uri; if you have a Video, this is video.uri 
VimeoClient.getInstance().fetchNetworkContent(uri, new ModelCallback<Video>(Video.class) { 
    @Override 
    public void success(Video video) { 
      // use the video 
    } 

    @Override 
    public void failure(VimeoError error) { 
      // voice the error 
    } 
}); 

Затем, если у вас есть видео, вы можете получить доступ к любой информации, которую вы хотите сразу от Video объекта в библиотеке. Информация вроде video.files, которая возвращает VideoFile, которая дает вам доступ к ссылкам, которые вы хотите.

+0

Тогда, если у вас есть видео, вы можете получить доступ к любой информации, у меня нет собственной учетной записи vimeo, и у меня нет никаких видеороликов самостоятельно setup.Moreover у меня только есть ссылка на видео, которая является youtube, dailymotion, vimeo, поэтому мне просто нужно играть в видео vimeo, используя свой собственный sdk, потому что im не получает реальный url из моего ответа api. – Erum

+0

Используя API, вы можете получить доступ только к файлам ' объект на «Видео», если вы тот, кто загрузил это видео (с учетной записью PRO). В Интернете есть «встроенный плеер», который позволяет воспроизводить любое видео, но на данный момент на Android нет встроенного плеера. Пожалуйста, обратитесь к [этой ссылке] (http://stackoverflow.com/questions/9030524/auto-playing-vimeo-videos-in-android-webview), которая охватывает получение игрока на Android с помощью 'WebView' для воспроизведения в Интернете встроенный плеер. –