]> git.saurik.com Git - wxWidgets.git/blame - interface/wx/protocol/http.h
Document MSW-only wxEVT_MOVING event.
[wxWidgets.git] / interface / wx / protocol / http.h
CommitLineData
23324ae1
FM
1/////////////////////////////////////////////////////////////////////////////
2// Name: protocol/http.h
e54c96f1 3// Purpose: interface of wxHTTP
23324ae1
FM
4// Author: wxWidgets team
5// RCS-ID: $Id$
526954c5 6// Licence: wxWindows licence
23324ae1
FM
7/////////////////////////////////////////////////////////////////////////////
8
9/**
10 @class wxHTTP
7c913512 11
a30b5ab9 12 wxHTTP can be used to establish a connection to an HTTP server.
7c913512 13
730b772b
FM
14 wxHTTP can thus be used to create a (basic) HTTP @b client.
15
23324ae1
FM
16 @library{wxnet}
17 @category{net}
7c913512 18
e54c96f1 19 @see wxSocketBase, wxURL
23324ae1
FM
20*/
21class wxHTTP : public wxProtocol
22{
23public:
730b772b
FM
24 /**
25 Default constructor.
26 */
27 wxHTTP();
28
29 /**
30 Destructor will close the connection if connected.
31 */
32 virtual ~wxHTTP();
33
e57337ce
VZ
34 //@{
35 /**
36 Connect to the HTTP server.
37
38 By default, connection is made to the port 80 of the specified @a host.
39 You may connect to a non-default port by specifying it explicitly using
40 the second overload.
5ba5f329
VZ
41
42 Currently wxHTTP only supports IPv4.
43
44 For the overload taking wxSockAddress, the @a wait argument is ignored.
e57337ce 45 */
882678eb
FM
46 virtual bool Connect(const wxString& host);
47 virtual bool Connect(const wxString& host, unsigned short port);
5ba5f329 48 virtual bool Connect(const wxSockAddress& addr, bool wait);
e57337ce
VZ
49 //@}
50
23324ae1 51 /**
730b772b 52 Returns the data attached with a field whose name is specified by @a header.
a30b5ab9
FM
53 If the field doesn't exist, it will return an empty string and not a @NULL string.
54
55 @note
56 The header is not case-sensitive, i.e. "CONTENT-TYPE" and "content-type"
57 represent the same header.
23324ae1 58 */
adaaa686 59 wxString GetHeader(const wxString& header) const;
23324ae1
FM
60
61 /**
a30b5ab9
FM
62 Creates a new input stream on the specified path.
63
64 Notice that this stream is unseekable, i.e. SeekI() and TellI() methods
65 shouldn't be used.
66
7c913512 67 Note that you can still know the size of the file you are getting using
a30b5ab9
FM
68 wxStreamBase::GetSize(). However there is a limitation: in HTTP protocol,
69 the size is not always specified so sometimes @c (size_t)-1 can returned to
70 indicate that the size is unknown.
71 In such case, you may want to use wxInputStream::LastRead() method in a loop
72 to get the total size.
73
d29a9a8a 74 @return Returns the initialized stream. You must delete it yourself
a30b5ab9 75 once you don't use it anymore and this must be done before
4cc4bfaf
FM
76 the wxHTTP object itself is destroyed. The destructor
77 closes the network connection. The next time you will
78 try to get a file the network connection will have to
79 be reestablished, but you don't have to take care of
80 this since wxHTTP reestablishes it automatically.
a30b5ab9 81
4cc4bfaf 82 @see wxInputStream
23324ae1 83 */
adaaa686 84 virtual wxInputStream* GetInputStream(const wxString& path);
23324ae1
FM
85
86 /**
a30b5ab9
FM
87 Returns the HTTP response code returned by the server.
88
89 Please refer to RFC 2616 for the list of responses.
23324ae1 90 */
730b772b 91 int GetResponse() const;
23324ae1
FM
92
93 /**
94 It sets data of a field to be sent during the next request to the HTTP server.
a30b5ab9 95
730b772b 96 The field name is specified by @a header and the content by @a h_data.
23324ae1
FM
97 This is a low level function and it assumes that you know what you are doing.
98 */
99 void SetHeader(const wxString& header, const wxString& h_data);
906cb3f1
JS
100
101 /**
102 Returns the value of a cookie.
103 */
104
105 wxString GetCookie(const wxString& cookie) const;
106
107 /**
108 Returns @true if there were cookies.
109 */
906cb3f1 110 bool HasCookies() const;
d00167e1
VZ
111
112 /**
ab9d6a4c 113 Set the binary data to be posted to the server.
d00167e1 114
ab9d6a4c
VZ
115 If a non-empty buffer is passed to this method, the next request will
116 be an HTTP @c POST instead of the default HTTP @c GET and the given @a
117 data will be posted as the body of this request.
118
119 For textual data a more convenient SetPostText() can be used instead.
120
121 @param contentType
122 The value of HTTP "Content-Type" header, e.g. "image/png".
123 @param data
124 The data to post.
125 @return
126 @true if any data was passed in or @false if the buffer was empty.
127
128 @since 2.9.4
129 */
130 bool SetPostBuffer(const wxString& contentType, const wxMemoryBuffer& data);
131
132 /**
133 Set the text to be posted to the server.
134
135 After a successful call to this method, the request will use HTTP @c
136 POST instead of the default @c GET when it's executed.
137
138 Use SetPostBuffer() if you need to post non-textual data.
139
140 @param contentType
141 The value of HTTP "Content-Type" header, e.g. "text/html;
142 charset=UTF-8".
143 @param data
144 The data to post.
145 @param conv
146 The conversion to use to convert @a data contents to a byte stream.
147 Its value should be consistent with the charset parameter specified
148 in @a contentType.
149 @return
150 @true if string was non-empty and was successfully converted using
151 the given @a conv or @false otherwise (in this case this request
152 won't be @c POST'ed correctly).
153
154 @since 2.9.4
d00167e1 155 */
ab9d6a4c
VZ
156 bool SetPostText(const wxString& contentType,
157 const wxString& data,
158 const wxMBConv& conv = wxConvUTF8);
23324ae1 159};
e54c96f1 160