如何修复java中的连接重置异常?

时间:2012-11-15 06:40:35

标签: java youtube youtube-api

我正在尝试将视频上传到youtube: 我的代码是:

private static void uploadVideo(YouTubeService service) throws IOException {
    System.out.println("First, type in the path to the movie file:");


    File videoFile = new File(readLine());

    if (!videoFile.exists()) {
      System.out.println("Sorry, that video doesn't exist.");
      return;
    }

    System.out.println(
        "What is the MIME type of this file? (ex. 'video/quicktime' for .mov)");

    String mimeType = readLine();

    System.out.println("What should I call this video?");
    String videoTitle = readLine();

    VideoEntry newEntry = new VideoEntry();

    YouTubeMediaGroup mg = newEntry.getOrCreateMediaGroup();

    mg.addCategory(new MediaCategory(YouTubeNamespace.CATEGORY_SCHEME, "Entertainment"));
    mg.setTitle(new MediaTitle());
    mg.getTitle().setPlainTextContent(videoTitle);
    mg.setKeywords(new MediaKeywords());
    mg.getKeywords().addKeyword("gdata-test");
    mg.setDescription(new MediaDescription());
    mg.getDescription().setPlainTextContent(videoTitle);
    mg.setPrivate(false);
    mg.addCategory(new MediaCategory(YouTubeNamespace.DEVELOPER_TAG_SCHEME, "mydevtag"));
    mg.addCategory(new MediaCategory(YouTubeNamespace.DEVELOPER_TAG_SCHEME, "anotherdevtag"));
    newEntry.setGeoCoordinates(new GeoRssWhere(37.0,-122.0));
    MediaFileSource ms = new MediaFileSource(videoFile, mimeType);

    newEntry.setMediaSource(ms);


    try {


      service.insert(new URL(VIDEO_UPLOAD_FEED), newEntry);

    } catch (ServiceException se) {
      System.out.println("Sorry, your upload was invalid:");
      System.out.println(se.getResponseBody());
      return;
    }

    System.out.println("Video uploaded successfully!");
  }

        switch(uploader.getUploadState()) {
          case COMPLETE:
            output.println("Uploaded successfully");
            break;
          case CLIENT_ERROR:
            output.println("Upload Failed");
            break;
          default:
            output.println("Unexpected upload status");
            break;
        }

     }

当我运行它时,它显示异常:

java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:189)
    at java.net.SocketInputStream.read(SocketInputStream.java:121)
    at java.io.BufferedInputStream.fill(BufferedInputStream.java:235)
    at java.io.BufferedInputStream.read1(BufferedInputStream.java:275)
    at java.io.BufferedInputStream.read(BufferedInputStream.java:334)
    at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:641)
    at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:589)
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1319)
    at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:468)
    at com.google.gdata.client.http.HttpGDataRequest.checkResponse(HttpGDataRequest.java:490)
    at com.google.gdata.client.http.HttpGDataRequest.execute(HttpGDataRequest.java:470)
    at com.google.gdata.client.http.GoogleGDataRequest.execute(GoogleGDataRequest.java:534)
    at com.google.gdata.client.media.MediaService.insert(MediaService.java:353)
    at ytupload.YouTubeWriteClient.uploadVideo(YouTubeWriteClient.java:514)
    at ytupload.YouTubeWriteClient.main(YouTubeWriteClient.java:837)

我从main调用的函数。上传(服务);  其中service = new YouTubeService(clientId,developerKey); 我该如何修复这个错误?我浪费了一天的时间......但是他想不出来。请建议。

编辑: VIDEO_UPLOAD_FEED =“http://gdata.youtube.com/feeds/api/users/abc123/uploads”

如果视频文件的路径我想作为一些http url给出怎么办? 请建议。 Thanx提前

1 个答案:

答案 0 :(得分:0)

您是否成功设置了服务的用户凭据?它可能用于创建与服务器的连接。

service.setUserCredentials(User, Password);

参加this