Google Data API 体验

来源:互联网 发布:商家怎么报名淘宝试用 编辑:程序博客网 时间:2024/04/29 22:19

用了live writer之后,很想要一个同步blog的功能,可惜没实现,还要一个一个的提交。决定自己动手,于是看了下 Google 提供的 Blogger 的 Google Data API,比较了几个版本的实现,最终决定使用.Net版本的,Java的就是看着不爽(嘿嘿)。

下载了安装包,编译源码和示例工程,一切正常。运行,异常(汗……)。

自己跟了一下代码,几经周折,才发现原来是访问不到。于是改成使用代理,搜了半天,最终还是根据源码的实现加了进去:

GDataRequestFactory requestFactory = (GDataRequestFactory)service.RequestFactory;
WebProxy torProxy = new WebProxy("127.0.0.1", 8118);
torProxy.Credentials = CredentialCache.DefaultCredentials;
torProxy.UseDefaultCredentials = true;
requestFactory.Proxy = torProxy;

原以为应该没问题,结果运行,还是异常,

---------------------------
断言失败: Abort=Quit、Retry=Debug、Ignore=Continue
---------------------------
did not find an auth token in QueryAuthToken

    at Tracing.Assert(Boolean condition, String msg)  D:/Program Files/Google/Google Data API SDK/Sources/Library/core/tracing.cs(209)

    at GDataGAuthRequest.QueryAuthToken(GDataCredentials gc)  D:/Program Files/Google/Google Data API SDK/Sources/Library/core/gauthrequest.cs(606)

    at GDataGAuthRequest.EnsureCredentials()  D:/Program Files/Google/Google Data API SDK/Sources/Library/core/gauthrequest.cs(422)

    at GDataRequest.EnsureWebRequest()  D:/Program Files/Google/Google Data API SDK/Sources/Library/core/request.cs(648)

    at GDataGAuthRequest.EnsureWebRequest()  D:/Program Files/Google/Google Data API SDK/Sources/Library/core/gauthrequest.cs(456)

    at GDataRequest.Execute()  D:/Program Files/Google/Google Data API SDK/Sources/Library/core/request.cs(696)

    at GDataGAuthRequest.Execute(Int32 retryCounter)  D:/Program Files/Google/Google Data API SDK/Sources/Library/core/gauthrequest.cs(701)

    at GDataGAuthRequest.Execute()  D:/Program Files/Google/Google Data API SDK/Sources/Library/core/gauthrequest.cs(684)

    at Service.Query(Uri queryUri, DateTime ifModifiedSince, String etag, Int64& contentLength)  D:/Program Files/Google/Google Data API SDK/Sources/Library/core/service.cs(403)

    at Service.Query(Uri queryUri, DateTime ifModifiedSince)  D:/Program Files/Google/Google Data API SDK/Sources/Library/core/service.cs(347)

    at Service.Query(FeedQuery feedQuery)  D:/Program Files/Google/Google Data API SDK/Sources/Library/core/service.cs(478)

    at BloggerService.Query(BloggerQuery feedQuery)  D:/Program Files/Google/Google Data API SDK/Sources/Library/blogger/bloggerservice.cs(50)

    at Blogger.RefreshFeedList()  D:/Program Files/Google/Google Data API SDK/Sources/Samples/blogger/blogger.cs(244)

    at Blogger.Go_Click(Object sender, EventArgs e)  D:/Program Files/Google/Google Data API SDK/Sources/Samples/blogger/blogger.cs(204)

    at Control.OnClick(EventArgs e) 

    at Button.OnClick(EventArgs e) 

    at Button.OnMouseUp(MouseEventArgs mevent) 

    at Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks) 

    at Control.WndProc(Message& m) 

    at ButtonBase.WndProc(Message& m) 

    at Button.WndProc(Message& m) 

    at ControlNativeWindow.OnMessage(Message& m) 

    at ControlNativeWindow.WndProc(Message& m) 

    at NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) 

    at UnsafeNativeMethods.DispatchMessageW(MSG& msg) 

    at ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData) 

    at ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context) 

    at ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context) 

    at Application.Run(Form mainForm) 

    at Blogger.Main()  D:/Program Files/Google/Google Data API SDK/Sources/Samples/blogger/blogger.cs(56)

    at AppDomain._nExecuteAssembly(Assembly assembly, String[] args) 

    at AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args) 

    at HostProc.RunUsersAssembly() 

    at ThreadHelper.ThreadStart_Context(Object state) 

    at ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 

    at ThreadHelper.ThreadStart() 

---------------------------
终止(A)   重试(R)   忽略(I)  
---------------------------

难道权限的输入有问题,几番查找资料,仔细核对文档,比较结果还是没问题。用户名,密码都是正确的。看来只有仔细跟代码了,仔细调试下,终于找到了异常位置 :

 

public static class GoogleAuthentication
{
internal string QueryAuthToken(GDataCredentials gc)
{
Stream requestStream = authRequest.GetRequestStream() ;

 

协议冲突,难道用了非blogger的协议,再看,恩 Service service = new Service("blogger", "BloggerSampleApp"); 直接换 BloggerService service = new BloggerService("BloggerSampleApp"); 还是不行。分析了半天,忽然想到用Live Writer的时候也有问题,这么说可能是http协议头冲突造成的。于是增加 config 文件


 
   
     
   

 

 

再运行,一切ok。终于解脱了。O(∩_∩)O哈哈~

原创粉丝点击