eCarlos.net - Påny forbundet til dotnetforum.dk
13-08-2005 05:25:00
Ak ja, hvorfor gøre noget nemt når det kan være svært.. Det burde næsten være guidmesterens motto.
http://eCarlos.net har tidligere været direkte forbundet med weblogs.dotnetforum.dk, men efter mesterens omlægning til CS har der ikke liiiiiiiiige været hul igennem. SimpleBlogService (SBS) var nemlig forsvundet.. Hulk hulk.
Og her komme det "svære" så ind i billedet, i stedet for at lave en ny ws til CS, er den desværre udstyret med metaWebBlogApi. Dette ændrer egentlig ikke så meget i forhold til en webservice, liiiiiiiiiiiiiiige bortset fra du skal lave din egen proxy, hvor vi jo ellers er så dejligt forvænt med at VS200x gør det for os..
eCarlos var på totalt bar bund da han læste følgende: At bruge vores metaBlogApi, fik dog googlet lidt metaBlogApi, og fandt frem til at der nok skulle bruges noget XMLRpc.. Derfra så over til http://www.xmlrpc.com/ for at læse lidt om hvad det nu var for en fisk. Fandt ud af at langt det nemmeste ville være at finde et lib der kunne det hele for mig, og der har Charles Cook heldigvis lige lavet det der skulle bruges.
Så langt så godt, nu var transporten på vej, så er det lige det med at få skruet sin egen proxy sammen, fik googlet lidt diverse og læst et par kodeeksempler igennem og så var det på med kodevanten. Det blev til følgende proxy prototype.
<XmlRpc.XmlRpcUrl("http://weblogs.dotnetforum.dk/metablogapi.aspx")> _
Public Class metaWeblogProxy
Inherits XmlRpc.XmlRpcClientProtocol
Public Structure post
Public dateCreated As DateTime
Public description As String
Public title As String
End Structure
'Returns postid as response
<XmlRpc.XmlRpcMethod("metaWeblog.newPost")> _
Public Function newPost(ByVal blogid As String, ByVal userid As String, ByVal password As String, ByVal post As post, ByVal publish As Boolean) As String
Dim myObj As Object() = New Object() {blogid, userid, password, post, publish}
Return CType(MyBase.Invoke("newPost", myObj), String)
End Function
'Returns bool for operation success.
<XmlRpc.XmlRpcMethod("metaWeblog.editPost")> _
Public Function editPost(ByVal postid As String, ByVal username As String, ByVal password As String, ByVal post As post, ByVal publish As Boolean) As Boolean
Return CType(MyBase.Invoke("editPost", New Object() {postid, username, password, post, publish}), Boolean)
End Function
End Class
Derefter er det blot at kalde metaWeblogProxy.newPost med de rigtige parametre.. Utroligt en så simpel task skal tage så lang tid.. Til gengæld lærte jeg en masse på kort tid :)