2015-03-09 2 views
0

У меня был файл WSDL, тогда я использовал AXIS2C WSDL2C инструмент для создания проекта клиента.Как установить тайм-аут клиента в клиенте axis2c

Я изменил файл axis2.xml. добавили эту строку в начале после <axisconfig name="Axis2/C">:

<parameter name="SO_TIMEOUT">8000</parameter> 

теперь я могу установить тайм-аут. Как я могу справиться с этим в своем коде? Я имею в виду, как я могу узнать, что у меня есть таймаут соединения или тайм-аут сокета, или сервер ответил правильно.

Вопрос Update: here это ссылка на мой проект:

ответ

0

Вы должны проанализировать error code из env->error->status_code после вызова клиента:

axiom_node_t* resp = axis2_svc_client_send_receive(client, env, payload); 

switch (env->error->status_code) 
{ 
case AXIS2_ERROR_RESPONSE_TIMED_OUT: 
    // Timeout 
    break; 

// other errors goes here ... 
} 

Кроме того, если вы хотите установить таймаут программно:

axis2_options_t* opt = axis2_options_create(env) 
axis2_options_set_timeout_in_milli_seconds(opt, env, 8000); 
axis2_svc_client_set_options(client, env, opt); 
+0

Hello. где я должен поставить первый кусок кода? я должен положить его в main.c? должен ли я создать все параметры (svc_client, env, payload)? Я отредактировал вопрос и включил ссылку на мой проект. Было бы очень приятно, если бы вы сказали мне, что делать. –

+0

Как я вижу, вы используете ADB. Невозможно получить код ошибки при использовании adb, если вы не измените созданный заглушку вручную. Найдите «axis2_svc_client_send_receive_with_op_qname» в вашей сгенерированной «axis2_stub_MathService.c» и попробуйте добавить туда переключатель/case. – loentar

+0

Вы можете пояснить немного, пожалуйста? Я не могу найти подходящее решение, и мне действительно нужно обрабатывать таймауты. @loentar –

 Смежные вопросы

  • Нет связанных вопросов^_^