2013-11-04 101 views
1

我在嘗試將帖子上傳到Blogger博客,但我遇到了錯誤。我使用的是Eclipse和庫引用的是:google-oauth-java-client-1.17.0-rc和gdata-src.java-1.47.1。通過Blogger API v1上傳帖子時出現錯誤

代碼:

import com.google.gdata.client.GoogleService; 
import com.google.gdata.data.Entry; 
import com.google.gdata.data.PlainTextConstruct; 
import com.google.gdata.util.ServiceException; 
import java.io.IOException; 
import java.net.URL; 

public class Blogger { 
    public static void createPost(GoogleService myService) throws ServiceException, IOException { 
     // Create the entry to insert 
     Entry myEntry = new Entry(); 
     // POST Title 
     myEntry.setTitle(new PlainTextConstruct("INDIA DEFEATED PAKISTAN ")); 
     // Post description 
     myEntry.setContent(new PlainTextConstruct("INDIA Defeated pakistan in only 4 seconds . Hindustan Jindabad ")); 
     // Blogger URL 
     URL postUrl = new URL("http://www.myblogspotsite.com/"); 
     myService.insert(postUrl, myEntry); 
    } 

    public static void main(String ar[]) throws ServiceException, IOException { 
     //creating Google service required to access and update Blogger post 
     GoogleService myService = new GoogleService("blogger", "exampleCo-exampleApp-1"); 
     myService.setUserCredentials("MY_GMAIL", "MY_PASSWORD"); 
     createPost(myService); 
    } 
} 

錯誤:

Exception in thread "main" com.google.gdata.util.ServiceException: Method Not Allowed 
<HTML> 
<HEAD> 
<TITLE>Method Not Allowed</TITLE> 
</HEAD> 
<BODY BGCOLOR="#FFFFFF" TEXT="#000000"> 
<H1>Method Not Allowed</H1> 
<H2>Error 405</H2> 
</BODY> 
</HTML> 

    at com.google.gdata.client.http.HttpGDataRequest.handleErrorResponse(HttpGDataRequest.java:632) 
    at com.google.gdata.client.http.GoogleGDataRequest.handleErrorResponse(GoogleGDataRequest.java:564) 
    at com.google.gdata.client.http.HttpGDataRequest.checkResponse(HttpGDataRequest.java:560) 
    at com.google.gdata.client.http.HttpGDataRequest.execute(HttpGDataRequest.java:538) 
    at com.google.gdata.client.http.GoogleGDataRequest.execute(GoogleGDataRequest.java:536) 
    at com.google.gdata.client.Service.insert(Service.java:1409) 
    at com.google.gdata.client.GoogleService.insert(GoogleService.java:613) 
    at Blogger.createPost(Blogger.java:27) 
    at Blogger.main(Blogger.java:35) 

回答

0

您使用的是文章的網址,是不正確的,URL應該有博客標識,URL的格式爲:

http://www.blogger.com/feeds/BLOG_ID/posts/default 

所以在Java中,你可以做到這一點,如下所示:

 GoogleService myService = new GoogleService("blogger", "exampleCo-exampleApp-1"); 
     myService.setUserCredentials("EMAIL", "PWD"); 
     Entry myEntry = new Entry(); 
     myEntry.setTitle(new PlainTextConstruct("TITLE post update")); 
     myEntry.setContent(new PlainTextConstruct("STATUS POST")); 
     URL feedUrl = new URL("http://www.blogger.com/feeds/default/blogs"); 
     Feed resultFeed = myService.getFeed(feedUrl, Feed.class); 
     String blog_name = "blog_name"; //the name of the blog where you want to post status 
     String BLOG_ID = ""; 
     for (int i = 0; i < resultFeed.getEntries().size(); i++) { 
      Entry entry = resultFeed.getEntries().get(i); 
      if (entry.getTitle().getPlainText().equalsIgnoreCase(blog_name)) { 
       String[] split = entry.getId().split("-"); 
       BLOG_ID = split[split.length - 1]; 
      } 
      System.out.println("Posting to:" + " " + "Blog id: " + BLOG_ID + " " + "Blog name: " + blog_name); 
     } 
     URL postUrl = new URL("http://www.blogger.com/feeds/" + BLOG_ID + "/posts/default"); 
     Entry insert = myService.insert(postUrl, myEntry); 
     System.out.println(insert.getHtmlLink().getHref()); 
相關問題