2016-07-26 33 views
0

https://player.vimeo.com/video/136004191/config努力,而I M得到错误来从VIMEO真正网址:Vimeo的Get请求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); 
      } 
     } 
    } 

而I M得到响应码405?有什么问题?移动和桌面浏览器中的相同网址对我进行响应。

+0

确保URL接受的方法是GET或它的PUSH –

+0

@GeetChoubey解释请问 – Erum

+0

从哪里可以找到它的GET或PUSH? – Erum

回答

0

您的代码似乎有问题,因为对于简单的GET字符串请求OutputStreamBuffer类引起异常。试试这个简单的代码。在我身边工作得很好。

@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库来与Vimeo API交谈。

该库将照顾所有的网络逻辑(所以你不需要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和dnt有我自己的任何视频setup.Moreover我只是有视频链接,这是YouTube,dailymotion,VIMEO,所以我只需要使用它自己的SDK播放VIMO视频,因为我没有从我的API响应获得真正的URL – Erum

+0

使用API​​,你只能访问'文件'如果您是上传该视频的人(使用PRO帐户),则可以使用“视频”对象。在网络上,有一个“嵌入式播放器”,可让您播放任何视频,但截至目前,Android上没有嵌入式播放器选项。请参考[这个链接](http://stackoverflow.com/questions/9030524/auto-playing-vimeo-videos-in-android-webview),其中涵盖了使用“WebView”在Android上播放玩家播放网页嵌入播放器。 –