Küldés halasztott blog

A közelmúltban a LiveJournal (livejournal.com aka, aka LJ) lehetősége van arra, hogy nem egy késedelmes szállítás rekordokat. Azaz elküldi a bejegyzést bármikor kényelmesen az Ön számára, de a film a felhasználók, akik elolvasták, úgy tűnik, csak bizonyos időpontokban. Korábban ez a képesség hasznot húzhat segítségével harmadik fél által nyújtott szolgáltatások (tulajdonában SUP'u), és most jött a lehetőség a szerver LJ.

Mivel a dokumentáció munka LiveJournalon kiszolgáló nem frissült, úgy tűnik, az idő Brad Fitzpatrick, annak érdekében, hogy megértsük, hogyan kell kihasználni ezt a lehetőséget, a program, meg kellett ásni a forráskódot LiveJournalon motort. jó, hogy nyitva van.

Nem fogok lakni, hogyan forrás sikerült kideríteni elvétől késleltetett küldése a bejegyzésekben, csak így szárad eredményeként, a több funkció használatához elég könnyen.

demonstrációs program

Annak igazolására, a küldő pozíciókat a LJ, írtam egy egyszerű programot ljdelay. felület, amely látható a következő képen:

Küldés halasztott blog

Ezzel a programmal, akkor küldje üzenetét, kérve őket, konkrét dátumokat. Ha nincs bejelölve az „időzített adás”, a megadott dátum lesz a napját a poszt, de a bejegyzésben, a falon a barátok azonnal megjelennek. Ha ezt a lehetőséget választja, akkor a felvétel megjelenik a filmben a barátok egy adott időpontban, és láthatjuk, hogy a listában a függőben lévő bejegyzéseket.

Vegye figyelembe a forrást a program és ugyanabban az időben nézd meg, hogy mindegy, hogy használja a halasztott küldést.

Megtanul dolgozni szerver

Ha még nem olvasta a korábbi cikkeket a sorozat, főleg a cikk alapjai livejournal.com szerver. röviden felidézni az alapvető pontokat működésével kapcsolatos a szerver.

Ismerje szerver futhat két protokoll - Lapos, ha az adatokat formájában paraméter = érték, és az XML-RPC, mivel azok formájában kibocsátott XML. A fentebb idézett cikket két osztálya mindkét protokoll. Ez a cikk fogja használni FlatLjServer osztály dolgozni Flat protokollt.

Az időzített adás üzenetét, míg a szokásos kérés postevent kell hozzá, vagy néhány paramétert kell megváltoztatni:

  • Jegyzőkönyv verziószámát (ver paraméter) nagyobbnak kell lennie, mint 3, ez logikus, hogy használjon 4.
  • Paraméter custom_time. egyenlő 1 jelöli, hogy felhasználási késleltetett küldés.
  • Tz paramétert (a szavak „időzóna”) meghatározza a felhasználó időzóna (időeltérés UTC). Adott egy sor "0400" (ellensúlyozta 4 óra), vagy a "-0400" (eltolás -4 óra), vagy a "-0130" (-1 óra 30 perc offset), stb

Lássuk, hogy ez hogyan működik a szerver végre a programot. Ahogy már mondtam, hogy dolgozni LiveJournal szerver program használható FlatLjServer osztályban. UML-diagram, amely az alábbiakban látható:

Küldés halasztott blog

FlatLjServer osztály két nyilvános mód: postEvent normál küldő blogbejegyzések és PostDelayEvent későbbi küldésre. Ezek nagyon hasonlóak és egymástól csak az új, paraméterek küldésére függő bejegyzés.

///


/// küldés postvil blog haladéktalanul
///

/// felhasználónév
/// jelszó
/// header
/// A szöveg a poszt
/// A feladás dátuma
public void PostEvent # 40; húr felhasználó,
húr jelszó
húr egyednél,
húr szöveg,
dateTime dateTime # 41;
# 123;
szótár paramItems =
GetPostEventParams # 40; felhasználó, jelszó, tárgyként, szöveg, dateTime # 41; ;

húr request = Dict2Request # 40; paramItems # 41; ;
küldenikérés # 40; kérés # 41; ;
# 125;


///


/// Levél blogbejegyzést a késleltetett
///

/// felhasználónév
/// jelszó
/// header
/// A szöveg a poszt
/// Feladásának dátuma koplalás
public void PostDelayEvent # 40; húr felhasználó,
húr jelszó
húr egyednél,
húr szöveg,
dateTime dateTime # 41;
# 123;
szótár paramItems =
GetPostEventParams # 40; felhasználó, jelszó, tárgyként, szöveg, dateTime # 41; ;

// Módosítsa a lekérdezést, mint küld egy bejegyzést haladéktalanul
// protokoll számát kell> 3
paramItems # 91; "Ver" # 93; = "4";

// megadása, hogy használat utáni késleltetett küldése
paramItems # 91; "Custom_time" # 93; = "1";

// Minden időpont. Ebben a formában 0400 vagy -0400
paramItems # 91; "Tz" # 93; = HttpUtility. urlencode # 40; GetTimeZone # 40; # 41; # 41; ;

húr request = Dict2Request # 40; paramItems # 41; ;
küldenikérés # 40; kérés # 41; ;
# 125;

GetPostEventParams módszer létrehoz egy szótár a paramétereket egy hagyományos (nem késleltetett) Levél üzenet.

privát szótár GetPostEventParams # 40; húr felhasználó,
húr jelszó
húr egyednél,
húr szöveg,
dateTime dateTime # 41;
# 123;
húr kihívás = GetChallenge # 40; # 41; ;
húr auth_response = GetAuthResponse # 40; jelszó, kihívás # 41; ;

szótár paramItems = new szótár # 40; # 41; ;
paramItems # 91; "Mode" # 93; = "Postevent";
paramItems # 91; "Auth_method" # 93; = "Challenge";
paramItems # 91; "Auth_challenge" # 93; = Challenge;
paramItems # 91; "Auth_response" # 93; = Auth_response;
paramItems # 91; „Felhasználó” # 93; = Felhasználói;
paramItems # 91; „Esemény” # 93; = HttpUtility. urlencode # 40; szöveg # 41; ;
paramItems # 91; „Tárgy” # 93; = HttpUtility. urlencode # 40; egyednél # 41; ;
paramItems # 91; "Allowmask" # 93; = 0. toString # 40; # 41; ;
paramItems # 91; "Year" # 93; = DateTime. Évben. toString # 40; # 41; ;
paramItems # 91; "Mon" # 93; = DateTime. Hónapban. toString # 40; # 41; ;
paramItems # 91; „Nap” # 93; = DateTime. Day. toString # 40; # 41; ;
paramItems # 91; „Óra” # 93; = DateTime. Hour. toString # 40; # 41; ;
paramItems # 91; "Min" # 93; = DateTime. Perc. toString # 40; # 41; ;
paramItems # 91; "Ver" # 93; = "1";
visszatérés paramItems;
# 125;

Ezután a módszer Dict2Request szótár átalakítjuk egy sor formájában „param1 = value1param2 = value2.” A módszer küldenikérés kérést küld a kiegészítéssel, a poszt a blog. Küldenikérés módszer nem változott képest ugyanazzal a módszerrel a cikket alapjai livejournal.com szerver. így részleteket nem lakozik rajta, itt a szöveg:

védett húr küldenikérés # 40; húr textRequest # 41;
# 123;
// Display log küld egy kérést
_log. WriteLine nevû # 40; "\ R \ n *** Kérés:" # 41; ;
_log. WriteLine nevû # 40; textRequest # 41; ;

// Átalakítás kérésére string byte []
byte # 91; # 93; ByteArray = Kódolás. UTF8. getBytes # 40; textRequest # 41; ;

// A kérés osztály
HttpWebRequest request = # 40; HttpWebRequest # 41; WebRequest. teremt # 40; ServerUri # 41; ;

// Feltölti a kérés paraméterei
kérelmet. Bizonyítványok = CredentialCache. DefaultCredentials;
kérelmet. Módszer = "POST";
kérelmet. ContentLength = textRequest. hossz;
kérelmet. ContentType = ez. ContentType;
kérelmet. UserAgent = "LJTest";

// Töröljük a gyűjtemény a régi süti, és hozzáadjuk az új
kérelmet. CookieContainer = new CookieContainer # 40; # 41; ;
kérelmet. CookieContainer. hozzáad # 40; _cookies # 41; ;

// Fill paraméterek Proxy (_proxy == null, ha a proxy nem használják)
kérelmet. Proxy = null;

// Levél adatkérés
Patak requestStream = kérelmet. GetRequestStream # 40; # 41; ;
requestStream. ír # 40; ByteArray, 0. textRequest. hossz # 41; ;

// A válasz osztály
HttpWebResponse válasz = # 40; HttpWebResponse # 41; kérelmet. GetResponse # 40; # 41; ;

// olvassa el a választ
Stream-responseStream = választ. GetResponseStream # 40; # 41; ;
StreamReader readStream = new StreamReader # 40; responseStream, kódolás. UTF8 # 41; ;

húr currResponse = readStream. ReadToEnd # 40; # 41; ;

// megjeleníti a log szerver
_log. WriteLine nevû # 40; "\ R \ n *** válasz:" # 41; ;
_log. WriteLine nevû # 40; currResponse # 41; ;

// Display log kapott a cookie válasz
_log. WriteLine nevû # 40; "\ R \ n *** Cookies:" # 41; ;
mert # 40; int i = 0; én # 123;
_log. WriteLine nevû # 40; választ. keksz # 91; én # 93;. toString # 40; # 41; # 41; ;
# 125;

readStream. közel # 40; # 41; ;
választ. közel # 40; # 41; ;

visszatérés currResponse;
# 125;

Bejegyzés küldése sikeres volt, és kaptunk egy linket egy új blog bejegyzést.

De úgy néz ki, mint a szerver válaszát esetében halasztott post:

A kérelem is jól ment, kaptunk küldött linkre, hogy a poszt, annak bizonyítékaként, hogy a poszt valóban elment, azt láthatjuk, hogy a halasztott bejegyzések oldalon.

Küldés halasztott blog

Ez minden segítségével néhány egyszerű kiegészítéseket ilyen, akkor előfordulhat, hogy a program használja a halasztott küldő üzenetét.

A cikk végén ismét emlékeztetni a link, ahol lehet letölteni a forrás ljdelay programot.