QHessian: Qt рдФрд░ Hessian

рдЫрд╡рд┐

рд▓реЗрдЦ рдореЗрдВ Qt рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реНрдЯреИрдХ рдкрд░ рд╣реЗрд╕рд┐рдпрди рдмрд╛рдЗрдирд░реА рд╡реЗрдм рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╕реА ++ рд▓рдХреНрд╖реНрдп рдордВрдЪред







рд╣реЗрд╕рд┐рдпрди рдПрдХ рдмрд╛рдЗрдирд░реА рд╡реЗрдм рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╣реИ рдЬреЛ рдЙрдкрдпреЛрдЧреА рд╡реЗрдм рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдпрд╣ рдмрд╛рдд рдЖрдкрдХреЛ рдмрддрд╛рдПрдЧреА рдХрд┐ рдХрд┐рд╕реА рднреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рдЖрдкрдХреА рд╡рд┐рдВрдбреЛ рдХреЗ рдмрд╛рд╣рд░ рдХрд╛ рдореМрд╕рдо рдХреИрд╕рд╛ рд╣реИ)ред рд╣реЗрд╕рд┐рдпрди рдХрд╛ рд╡рд┐рдХрд╛рд╕ рдХрд╛рдКрдХреЛ рдЯреЗрдХреНрдиреЛрд▓реЙрдЬреА, рдЗрдВрдХред рдХрдВрдкрдиреА рдиреЗ рдЬрд╛рд╡рд╛, рдкрд╛рдпрдерди рдФрд░ рдПрдХреНрд╢рдирд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рднреА рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ред рддреГрддреАрдп-рдкрдХреНрд╖ рдХрдВрдкрдирд┐рдпреЛрдВ рдиреЗ рд▓рдЧрднрдЧ рд╕рднреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ (C ++, C #, Perl, PHP, Ruby, Objective-C, D, Erlang) рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рд╣реИред



рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рд░реНрд╡рд░ рдкрд░ рд╕реЗрдм рдХреА рдПрдХ рдЯреЛрдХрд░реА рд╣реИред рдФрд░ рд╣рдо рдЧреНрд░рд╛рд╣рдХ рдХреЗ рдЕрдиреБрд░реЛрдз рдкрд░ рдЙрд╕реЗ рдПрдХ рд╕реЗрдм рджреЗрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдБ рд╣реЗрд╕рд┐рдпрди рд╣рдорд╛рд░реА рдорджрдж рдХрд░реЗрдЧрд╛ред



рд╕рд░реНрд╡рд░ рдкрд░, рд╣рдо рд╕реЗрд╡рд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ (рдЬрд╛рд╡рд╛ рдореЗрдВ рд╕рд░реНрд╡рд░) рдмрдирд╛рддреЗ рд╣реИрдВ:

public interface FruitService {

Apple getNextApple();

}




* This source code was highlighted with Source Code Highlighter .




рд╣рдо рдЧреНрд░рд╛рд╣рдХ (C ++) рдкрд░ рдПрдХ рд╕рдорд╛рди рд╢реНрд░реЗрдгреА рдмрдирд╛рддреЗ рд╣реИрдВ:
class FruitService {

public :

Apple getNextApple();

}




* This source code was highlighted with Source Code Highlighter .




рдЬрдм getNextApple () рд╡рд┐рдзрд┐ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рдХреЙрд▓ рдХреА рдЬрд╛рддреА рд╣реИ, рддреЛ рд╣реЗрд╕рд┐рдпрди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕рд░реНрд╡рд░ (рдПрдХ рд╕рдорд╛рди рд╕рд░реНрд╡рд░ рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП) рд╕реЗ рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЧреНрд░рд╛рд╣рдХ рдХреЛ рдкрд░рд┐рдгрд╛рдо рджреЗрддрд╛ рд╣реИред рд╣реЗрд╕рд┐рдпрди рд╣рдореЗрдВ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реЗрдм рдкрд╣реБрдВрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдмрджреНрдз рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рд╕рд░реНрд╡рд░ рдкрд░ рдбреЗрдЯрд╛ рдХреЛ рдХреНрд░рдордмрджреНрдз рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рдЗрд╕реЗ рдбрд┐рд╕реЗрд░реНрдмрд▓рд╛рдЗрдЬ рдХрд░рддрд╛ рд╣реИред рдПрдХ рд╕реЗрдм рдХреЛ рдмрд╛рдЗрдЯ рд╕рд░рдгреА рдореЗрдВ рдмрджрд▓рдирд╛, рдЗрд╕реЗ рдПрдХ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛, рдФрд░ рдПрдХ рд╕рд░рдгреА рд╕реЗ рд╕реЗрдм рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣реЗрд╕рд┐рдпрди рдХрд╛рд░реНрдп рд╣реИред рдмрд╛рдХреА рдЖрдкрдХрд╛ рдХрд╛рдо рд╣реИред



рдХреНрдпреВрдЯреА

рдХреНрдпреВрдЯреА рдПрдХ рд░реВрдкрд░реЗрдЦрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╢рд╛рдпрдж рд╣реА рдЗрд╕реЗ рдкреЗрд╢ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореИрдВ рдХреЗрд╡рд▓ рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рд╣рдо рдХреНрдпреВрдЯреА рд╕реА ++ рдХреЗ рд▓рд┐рдП рд╣реЗрд╕рд┐рдпрди рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред



рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, C ++ рдХреЗ рддрд╣рдд рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рдХрдИ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди (рдореИрдВ 2 рдЦреЛрдЬрдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣реЗ): рд╣реЗрд╕рд┐рдпрди рд╕реАрдкреАрдкреА рдФрд░ рд╣реЗрд╕рд┐рдпрдиреЛрд░рдм рдорд╣рд╛рди рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рд╣реИрдВ рдФрд░ рд╡реЗ рдХрд╛рдлреА рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╣реИрдВред рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рдореИрдВрдиреЗ рдЕрдкрдиреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рд╣реЗрд╕рд┐рдпрдиреЛрд░рдм рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ - рдпрд╣ рдХреЛрдб рдкреАрдврд╝реА рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддред рдЖрдкрдХреЛ рдПрдХ рдЯреАрдо рдХреЗ рд╕рд╛рде рдЕрдкрдиреА рд╕рднреА рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд▓рд┐рдП C ++ рдкреНрд░реЙрдХреНрд╕реА рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ (рджреЛ рдШрдВрдЯреЗ рдХреА рддреИрдпрд╛рд░реА рдХреЗ рдмрд╛рдж)ред



рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рджреЛрдиреЛрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЖрдкрдХреЛ рдХреНрдпреВрдЯреА рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рд╡рд┐рджреЗрд╢реА рджрд┐рдЦрдиреЗ рд╡рд╛рд▓реЗ рдХреЛрдб рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рддреЗ рд╣реИрдВред рдЙрдиреНрд╣реЗрдВ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реНрдЯреИрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: рд╣реЗрд╕рд┐рдпрди рд╕реАрдкреАрдкреА - рдПрд╕рдПрд╕рдПрд▓рдкреАрдкреА, рд╣реЗрд╕рд┐рдпреЛрдирд░реНрдм - рд╕реАрдИрдЖрд░рдПрд▓ред рдпрд╣ рддрдереНрдп, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рд╡рд┐рдХрд╛рд╕ рдХреЛ рдЬрдЯрд┐рд▓ рдмрдирд╛рддрд╛ рд╣реИред рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдиреЗрдЯрд╡рд░реНрдХ рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдХреЗ рд▓рд┐рдП рдЗрди рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреА рдЬрд░реВрд░рдд рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Qt рдХреА рдЕрдкрдиреА рдПрдХ рдкрд░рдд рд╣реИ рдФрд░ рдореИрдВ рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рджреЛрдиреЛрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рддреЗ рд╕рдордп рдирд┐рд╖реНрдкрд╛рджрди рдкреНрд░рд╡рд╛рд╣ рдХреЛ рдЕрд╡рд░реБрджреНрдз рдХрд░рддреЗ рд╣реИрдВ, рдЬрдмрдХрд┐ рдХреНрдпреВрдЯреА рдиреЗрдЯрд╡рд░реНрдХ рдкрд░рдд рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╣реИред



рдЗрд╕ рдкреНрд░рдХрд╛рд░ , рдореЗрд░рд╛ рд▓рдХреНрд╖реНрдп QNetworkAccessManager рдФрд░ рдЗрд╕рдХреЗ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреНрд░рдХреГрддрд┐ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдмрдирд╛рдирд╛ рдерд╛ред



QHessian



QHessian (рдЗрд╕рдХреЗ рдмрд╛рдж qh) рдПрдХ рд╣реЗрд╕рд┐рдпрди рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ рдЬреЛ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, Qt рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реНрдЯреИрдХ рдЗрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред



рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рд╣реЗрд╕рд┐рдпрди рдХрд╛ рд▓рдХреНрд╖реНрдп рдХреНрд░рдордмрджреНрдз рдХрд░рдирд╛ рд╣реИ, рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рд╕рдВрдЪрд╛рд░ рдХрд░рдирд╛ рдФрд░ рдбреЗрдЯрд╛ рдХреЛ рдбреАрд░рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдирд╛ рд╣реИред QNetworkAccessManager рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рд╕рдВрдЪрд░рдг рдХрд╛ рдзреНрдпрд╛рди рд░рдЦрддрд╛ рд╣реИред рд╣реЗрд╕рд┐рдпрди 2.0 рд╕реАрд░рд┐рдпрд▓рд╛рдЗрдЬреЗрд╢рди рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдбреЗрдЯрд╛ рдХреНрд░рдордмрджреНрдз рдФрд░ deserialized рд╣реИред рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП: рдЗрд╕ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, qh рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкреНрд░рдХрд╛рд░ рдкрджрд╛рдиреБрдХреНрд░рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ: рдХреНрдпреВрдПрдЪ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рддрдВрддреНрд░ рдорд╛рдирдХ рдЗрдирдкреБрдЯ / рдЖрдЙрдЯрдкреБрдЯ рдзрд╛рд░рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддрдВрддреНрд░ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рддреЗ рд╣реИрдВред рдпрд╛рдиреА рдкрдарди " >> " рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдХреНрд░рдорд╢рдГ рд▓реЗрдЦрди, " << " рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкрдврд╝рдирд╛ рдПрдХ рд╡рд┐рд╢реЗрд╖ QHessianReturnParser рдСрдмреНрдЬреЗрдХреНрдЯ (рд╕рд░реНрд╡рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкрд╛рд░реНрд╕рд░) рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдФрд░ рд░рд┐рдХреЙрд░реНрдб QHessianMethodCall рдСрдмреНрдЬреЗрдХреНрдЯ (рд╕рд░реНрд╡рд░ рдкрд░ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рддреИрдпрд╛рд░ рдХрд░рдирд╛) рдореЗрдВ рд╣реИред



рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдирдореВрдирд╛ рд╕рд░реНрд╡рд░ рд╡рд┐рдзрд┐ (рдкреВрд░реНрдгрд╛рдВрдХ, рд╕реНрдЯреНрд░рд┐рдВрдЧ, рддрд┐рдерд┐) рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛:

{

using namespace QHessian:: in ;

QHessian::QHessianMethodCall call( "sample" );

call << Long(55) << String (тАЬтАЭ) << DateTime (QDateTime::currentDateTime ());

call.invoke(networkManager,

QUrl(тАЬhttp: //serviceUrlтАЭ), //

myQObject, // QObject,

SLOT(reply()), //

SLOT(error( int , const QString&))); //

}




* This source code was highlighted with Source Code Highlighter .




рдпрд╣ рдХреЛрдб рдирдореВрдирд╛ рдкрджреНрдзрддрд┐ рдХреЛ рдкреИрд░рд╛рдореАрдЯрд░ 55, рд╡рд╕реАрд▓реА, рд╡рд░реНрддрдорд╛рди рд╕рдордп рдХреЗ рд╕рд╛рде рдХреЙрд▓ рдХрд░реЗрдЧрд╛ред рд╕рд░реНрд╡рд░ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ myQObject рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рддреНрд░реБрдЯрд┐ рд╕реНрд▓реЙрдЯ рдореЗрдВ, myQObject рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдЙрддреНрддрд░ () рд╕реНрд▓реЙрдЯ рдореЗрдВ рд╕рдВрд╕рд╛рдзрд┐рдд рдХреА рдЬрд╛рдПрдЧреА, рдпрд╛ред рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛ рджреВрдВ рдХрд┐ рдХреЙрд▓ рдмреНрд▓реЙрдХ рдирд╣реАрдВ рд╣реЛ рд░рд╣реА рд╣реИ, рдЕрд░реНрдерд╛рдд рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рднрд╛рдк рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред



рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рд╣рдорд╛рд░реА рд╕реЗрд╡рд╛ рдХреЗрд╡рд▓ рд╡рд╕реНрддреБ com.googlecode.AnswerObject рдореЗрдВ рджрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рддреА рд╣реИред рддрдм рдЙрддреНрддрд░ рд╕реНрд▓реЙрдЯ рдореЗрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:

void MyQObject::reply() {

using namespace QHessian:: out ;



qint32 long ;

QString string ;

QDateTime dateTime;



QHessian::QHessianReturnParser& parser =

*(QHessian::QHessianReturnParser*) QObject::sender();



parser >> BeginObject(тАЬcom.googlecode.AnswerObjectтАЭ)

>> Long( long )

>> String ( String )

>> DateTime (dateTime)

>> EndObject();



parser.deleteLater();

}




* This source code was highlighted with Source Code Highlighter .




рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдмрд╛рдж, рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдореВрд▓реНрдп 55 рд╣реЛрдЧрд╛, рд╕реНрдЯреНрд░рд┐рдВрдЧ - рд╡рд╛рд╕рд┐рд▓реА, рдбреЗрдЯрд╛рдЗрдо - рдкреНрд░реЗрд╖рд┐рдд рд╕рдордпред



QHessian рд╕рдВрдЧреНрд░рд╣ (рд╕рд░рдгрд┐рдпрд╛рдБ, рд╕реВрдЪрд┐рдпрд╛рдБ, рд╕рд╛рд╣рдЪрд░реНрдп рд╕рд░рдгрд┐рдпрд╛рдБ, рдЖрджрд┐) рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред

рдпрд╣ рд╕рд░реНрд╡рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕реЗ рдмрд╣реБрднреБрдЬ рд╡рд░реНрдЧ рдкрдврд╝ рд╕рдХрддрд╛ рд╣реИ:

{

using namespace QHessian:: out ;



QHessian::QHessianReturnParser& parser =

*(QHessian::QHessianReturnParser*) QObject::sender();



qint32 pointCount;



parser >> BeginObject( "Polygon" );

parser >> BeginCollection(тАЬpointsтАЭ, pointCount);



for ( int i=0; i<pointCount; ++i) {

qint32 x, y;

parser >> Integer(x) >> Integer(y);

}



parser >> EndCollection();

parser >> EndObject();

parser.deleteLater();

}




* This source code was highlighted with Source Code Highlighter .




рдЗрд╕ рдХреЛрдб рдореЗрдВ: рдпрд╣ рднреА рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рд╣рдо рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рд░реНрд╡рд░ рдПрдХ рдЕрдкреНрд░рдХрд╛рд╢рд┐рдд рд╕реВрдЪреА рд╕реВрдЪреА <? рдЬреНрдпреЛрдореЗрдЯреНрд░реА рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░> рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдкрдХреЛ рд╡рд┐рд╢реЗрд╖ рдкрд┐рдВрдЧрд┐рдВрдЧ () рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреА рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╕реНрдЯреНрд░реАрдо рд╕реЗ рдкрдврд╝рдиреЗ рдХрд╛ рд╡рд╛рдВрдЫрд┐рдд рд╕рдВрдЪрд╛рд▓рди рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ (рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рд╣реИ)ред



рдирд┐рд╖реНрдХрд░реНрд╖

рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдкреВрд░реА рддрд░рд╣ рдЙрдкрдпреБрдХреНрдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдирд┐рдХрд▓рд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред



рдкреНрд▓рд╕рд╕ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ: рд╡рд┐рдкрдХреНрд╖ рджреНрд╡рд╛рд░рд╛: рд╕рдВрджрд░реНрдн:

рд╣реЗрд╕рд┐рдпрди: http://hessian.caucho.com

QHessian: http://code.google.com/p/qhessian

QHessian FAQ: http://code.google.com/p/qhessian/wiki/FAQ

QHessian QA: http://code.google.com/p/qhessian/wiki/QHessian_QA



рдЖрдкрдХрд╛ рдзрдиреНрдпрд╡рд╛рдж



==

рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдФрд░ рд▓реЗрдЦ рд▓рд┐рдЦрдиреЗ рдореЗрдВ рдорджрдж рдХреЗ рд▓рд┐рдП рд╕рд░реНрдЧреЗрдИ рдмрд┐рдЬрд┐рди рдХреЛ рдзрдиреНрдпрд╡рд╛рджред



UPD: рдмреНрд▓реЙрдЧ



All Articles