00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef AXIS2_HTTP_TRANSPORT_UTILS_H
00019 #define AXIS2_HTTP_TRANSPORT_UTILS_H
00020
00021 #define AXIS2_MTOM_OUTPUT_BUFFER_SIZE 1024
00022
00035 #include <axis2_const.h>
00036 #include <axis2_defines.h>
00037 #include <axutil_env.h>
00038 #include <axiom_stax_builder.h>
00039 #include <axis2_msg_ctx.h>
00040 #include <axis2_conf_ctx.h>
00041 #include <axutil_hash.h>
00042 #include <axiom_element.h>
00043 #include <axutil_stream.h>
00044 #include <axiom_soap_envelope.h>
00045 #include <axutil_http_chunked_stream.h>
00046 #include <axis2_http_out_transport_info.h>
00047 #include <axutil_url.h>
00048 #include <axiom_mtom_sending_callback.h>
00049
00050 #ifdef __cplusplus
00051 extern "C"
00052 {
00053 #endif
00054
00055 typedef enum axis2_http_method_types
00056 {
00057 AXIS2_HTTP_METHOD_GET = 0,
00058 AXIS2_HTTP_METHOD_POST,
00059 AXIS2_HTTP_METHOD_HEAD,
00060 AXIS2_HTTP_METHOD_PUT,
00061 AXIS2_HTTP_METHOD_DELETE
00062 }axis2_http_method_types_t;
00063
00064
00065 typedef struct axis2_http_transport_in
00066 {
00068 axis2_char_t *content_type;
00070 int content_length;
00072 axis2_msg_ctx_t *msg_ctx;
00073
00075 axis2_char_t *soap_action;
00076
00078 axis2_char_t *request_uri;
00079
00081 axutil_stream_t *in_stream;
00082
00084 axis2_char_t *remote_ip;
00085
00087 axis2_char_t *svr_port;
00088
00090 axis2_char_t *transfer_encoding;
00091
00093 axis2_char_t *accept_header;
00094
00096 axis2_char_t *accept_language_header;
00097
00099 axis2_char_t *accept_charset_header;
00102 int request_method;
00104 axis2_http_out_transport_info_t *out_transport_info;
00106 axis2_char_t *request_url_prefix;
00107
00108 }axis2_http_transport_in_t;
00109
00110 typedef struct axis2_http_transport_out
00111 {
00113 axis2_char_t *http_status_code_name;
00115 int http_status_code;
00117 axis2_msg_ctx_t *msg_ctx;
00119 void *response_data;
00121 axis2_char_t *content_type;
00123 int response_data_length;
00125 axis2_char_t *content_language;
00127 axutil_array_list_t *output_headers;
00128
00129 }axis2_http_transport_out_t;
00130
00131
00138 AXIS2_EXTERN axis2_status_t AXIS2_CALL
00139 axis2_http_transport_utils_transport_in_init(axis2_http_transport_in_t *in,
00140 const axutil_env_t *env);
00141
00148 AXIS2_EXTERN axis2_status_t AXIS2_CALL
00149 axis2_http_transport_utils_transport_in_uninit(axis2_http_transport_in_t *request,
00150 const axutil_env_t *env);
00151
00158 AXIS2_EXTERN axis2_status_t AXIS2_CALL
00159 axis2_http_transport_utils_transport_out_init(axis2_http_transport_out_t *out,
00160 const axutil_env_t *env);
00161
00162
00163 AXIS2_EXTERN axis2_status_t AXIS2_CALL
00164 axis2_http_transport_utils_transport_out_uninit(axis2_http_transport_out_t *response,
00165 const axutil_env_t *env);
00175 AXIS2_EXTERN axis2_status_t AXIS2_CALL
00176 axis2_http_transport_utils_process_request(
00177 const axutil_env_t *env,
00178 axis2_conf_ctx_t *conf_ctx,
00179 axis2_http_transport_in_t *request,
00180 axis2_http_transport_out_t *response);
00181
00182
00183
00201 AXIS2_EXTERN axis2_status_t AXIS2_CALL
00202 axis2_http_transport_utils_process_http_post_request(
00203 const axutil_env_t * env,
00204 axis2_msg_ctx_t * msg_ctx,
00205 axutil_stream_t * in_stream,
00206 axutil_stream_t * out_stream,
00207 const axis2_char_t * content_type,
00208 const int content_length,
00209 axutil_string_t * soap_action_header,
00210 const axis2_char_t * request_uri);
00211
00212
00226 AXIS2_EXTERN axis2_status_t AXIS2_CALL
00227 axis2_http_transport_utils_process_http_put_request(
00228 const axutil_env_t * env,
00229 axis2_msg_ctx_t * msg_ctx,
00230 axutil_stream_t * in_stream,
00231 axutil_stream_t * out_stream,
00232 const axis2_char_t * content_type,
00233 const int content_length,
00234 axutil_string_t * soap_action_header,
00235 const axis2_char_t * request_uri);
00236
00237 AXIS2_EXTERN axis2_bool_t AXIS2_CALL
00238 axis2_http_transport_utils_process_http_get_request(
00239 const axutil_env_t * env,
00240 axis2_msg_ctx_t * msg_ctx,
00241 axutil_stream_t * in_stream,
00242 axutil_stream_t * out_stream,
00243 const axis2_char_t * content_type,
00244 axutil_string_t * soap_action_header,
00245 const axis2_char_t * request_uri,
00246 axis2_conf_ctx_t * conf_ctx,
00247 axutil_hash_t * request_params);
00248
00249 AXIS2_EXTERN axis2_bool_t AXIS2_CALL
00250
00251 axis2_http_transport_utils_process_http_head_request(
00252 const axutil_env_t * env,
00253 axis2_msg_ctx_t * msg_ctx,
00254 axutil_stream_t * in_stream,
00255 axutil_stream_t * out_stream,
00256 const axis2_char_t * content_type,
00257 axutil_string_t * soap_action_header,
00258 const axis2_char_t * request_uri,
00259 axis2_conf_ctx_t * conf_ctx,
00260 axutil_hash_t * request_params);
00261
00262 AXIS2_EXTERN axis2_bool_t AXIS2_CALL
00263
00264 axis2_http_transport_utils_process_http_delete_request(
00265 const axutil_env_t * env,
00266 axis2_msg_ctx_t * msg_ctx,
00267 axutil_stream_t * in_stream,
00268 axutil_stream_t * out_stream,
00269 const axis2_char_t * content_type,
00270 axutil_string_t * soap_action_header,
00271 const axis2_char_t * request_uri,
00272 axis2_conf_ctx_t * conf_ctx,
00273 axutil_hash_t * request_params);
00274
00275 AXIS2_EXTERN axiom_stax_builder_t *AXIS2_CALL
00276
00277 axis2_http_transport_utils_select_builder_for_mime(
00278 const axutil_env_t * env,
00279 axis2_char_t * request_uri,
00280 axis2_msg_ctx_t * msg_ctx,
00281 axutil_stream_t * in_stream,
00282 axis2_char_t * content_type);
00283
00284 AXIS2_EXTERN axis2_bool_t AXIS2_CALL
00285
00286 axis2_http_transport_utils_do_write_mtom(
00287 const axutil_env_t * env,
00288 axis2_msg_ctx_t * msg_ctx);
00289
00290 AXIS2_EXTERN axutil_hash_t *AXIS2_CALL
00291
00292 axis2_http_transport_utils_get_request_params(
00293 const axutil_env_t * env,
00294 axis2_char_t * request_uri);
00295
00296 AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00297 axis2_http_transport_utils_get_not_found(
00298 const axutil_env_t * env,
00299 axis2_conf_ctx_t * conf_ctx);
00300
00301 AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00302 axis2_http_transport_utils_get_not_implemented(
00303 const axutil_env_t * env,
00304 axis2_conf_ctx_t * conf_ctx);
00305
00306 AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00307 axis2_http_transport_utils_get_method_not_allowed(
00308 const axutil_env_t * env,
00309 axis2_conf_ctx_t * conf_ctx);
00310
00311 AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00312 axis2_http_transport_utils_get_not_acceptable(
00313 const axutil_env_t * env,
00314 axis2_conf_ctx_t * conf_ctx);
00315
00316 AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00317 axis2_http_transport_utils_get_bad_request(
00318 const axutil_env_t * env,
00319 axis2_conf_ctx_t * conf_ctx);
00320
00321 AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00322 axis2_http_transport_utils_get_request_timeout(
00323 const axutil_env_t * env,
00324 axis2_conf_ctx_t * conf_ctx);
00325
00326 AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00327 axis2_http_transport_utils_get_conflict(
00328 const axutil_env_t * env,
00329 axis2_conf_ctx_t * conf_ctx);
00330
00331 AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00332 axis2_http_transport_utils_get_gone(
00333 const axutil_env_t * env,
00334 axis2_conf_ctx_t * conf_ctx);
00335
00336 AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00337 axis2_http_transport_utils_get_precondition_failed(
00338 const axutil_env_t * env,
00339 axis2_conf_ctx_t * conf_ctx);
00340
00341 AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00342 axis2_http_transport_utils_get_request_entity_too_large(
00343 const axutil_env_t * env,
00344 axis2_conf_ctx_t * conf_ctx);
00345
00346 AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00347 axis2_http_transport_utils_get_service_unavailable(
00348 const axutil_env_t * env,
00349 axis2_conf_ctx_t * conf_ctx);
00350
00351 AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00352 axis2_http_transport_utils_get_internal_server_error(
00353 const axutil_env_t * env,
00354 axis2_conf_ctx_t * conf_ctx);
00355
00356 AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00357
00358 axis2_http_transport_utils_get_services_html(
00359 const axutil_env_t * env,
00360 axis2_conf_ctx_t * conf_ctx);
00361
00362 AXIS2_EXTERN axis2_char_t *AXIS2_CALL
00363
00364 axis2_http_transport_utils_get_services_static_wsdl(
00365 const axutil_env_t * env,
00366 axis2_conf_ctx_t * conf_ctx,
00367 axis2_char_t * request_url);
00368
00369 AXIS2_EXTERN axutil_hash_t *AXIS2_CALL
00370
00371 axis2_http_transport_utils_get_request_params(
00372 const axutil_env_t * env,
00373 axis2_char_t * request_uri);
00374
00375 AXIS2_EXTERN axiom_soap_envelope_t *AXIS2_CALL
00376
00377 axis2_http_transport_utils_create_soap_msg(
00378 const axutil_env_t * env,
00379 axis2_msg_ctx_t * msg_ctx,
00380 const axis2_char_t * soap_ns_uri);
00381
00382 AXIS2_EXTERN axutil_array_list_t* AXIS2_CALL
00383 axis2_http_transport_utils_process_accept_headers(
00384 const axutil_env_t *env,
00385 axis2_char_t *accept_value);
00386
00387 AXIS2_EXTERN axis2_status_t AXIS2_CALL
00388 axis2_http_transport_utils_send_mtom_message(
00389 axutil_http_chunked_stream_t * chunked_stream,
00390 const axutil_env_t * env,
00391 axutil_array_list_t *mime_parts,
00392 axis2_char_t *sending_callback_name);
00393
00394 AXIS2_EXTERN void AXIS2_CALL
00395 axis2_http_transport_utils_destroy_mime_parts(
00396 axutil_array_list_t *mime_parts,
00397 const axutil_env_t *env);
00398
00399 AXIS2_EXTERN void *AXIS2_CALL
00400 axis2_http_transport_utils_initiate_callback(
00401 const axutil_env_t *env,
00402 axis2_char_t *callback_name,
00403 void *user_param,
00404 axiom_mtom_sending_callback_t **callback);
00405
00406 AXIS2_EXTERN axis2_bool_t AXIS2_CALL axis2_http_transport_utils_is_callback_required(
00407 const axutil_env_t *env,
00408 axutil_array_list_t *mime_parts);
00409
00410
00411
00413 #ifdef __cplusplus
00414 }
00415 #endif
00416
00417 #endif