parikshit.nangre@infosys Ответов: 1

Как передать не XML-данные в заголовке в gsoap C++ от клиента?


Я использую библиотеку gsoap c++ для вызова веб-службы java.

Я могу передать файл json, вызвав json_call, но я хочу добавить информацию о заголовке. Для этого я изменил заголовок struct SOAP_ENV__следующим образом:

struct ns3__заголовок
{
char *имя пользователя;
char* пароль;
};
struct SOAP_ENV__заголовок
{
#ifdef WITH_NOEMPTYSTRUCT
чар манекен;
#endif
заголовок ns3 как структура__*сайт ns3__файл myheader;
};
Теперь я могу добавлять значения в заголовок, но моя проблема в том, что они добавляются в формате xml в заголовок. Но я хочу просто тег:формат значения. Как этого добиться?

Когда я передаю заголовок, он выглядит так:
Когда я передаю заголовок, он выглядит так:

&ЛТ;?в XML версия="1.0" кодирование="UTF-8"?&ГТ; &ЛТ;имя пользователя с ID="_300"&ГТ; &ЛТ;сайт ns3:файл myheader&ГТ;
в мыло_из_мыло_ОКР__заголовок

{
"добавлять":
{
"я": 10,
"j": 20,
}
}

Но это должно выглядеть так: (заголовок не должен быть в xml, как хочет сервер таким образом -)

имя пользователя:xyz
пароль:abcd
...
...
{
"добавлять":
{
"я": 10,
"j": 20,

}
}

Что я уже пробовал:

я не уверен, как иметь заголовок только с обычным текстом, а не с xml

Richard MacCutchan

Передача идентификатора пользователя и пароля в открытом виде-это верный способ уничтожить вашу систему хакерами.

parikshit.nangre@infosys

я ничего не могу сделать, так как реализация на стороне сервера находится таким образом...но как мы можем это сделать ?

1 Ответов

Рейтинг:
2

parikshit.nangre@infosys

Наконец-то нашел способ, который работает для отправки информации заголовка в вызове rest при использовании gsoap

#include "json.h"
#include <string.h>
#include "jsonStub.h"

struct Namespace namespaces[] = { {NULL, NULL} };
int main()
{
	   struct soap *ctx = soap_new1(SOAP_XML_NOTYPE);
	   soap_init(ctx);
	   struct value *request = new_value(ctx);
	   struct value response;

	   ctx->sendfd = 1;   
	   ctx->http_extra_header = "userName:abcd\r\npassword:xyz";
	   *string_of(value_at(value_at(request, "add"), "i")) = "10";
	   *string_of(value_at(value_at(request, "add"), "j")) = "20";
	  
	   json_write(ctx, request);
	   printf("\n");
	   if (json_call(ctx, "endpoint",request, &response))
	   {
			 printf( "json call failed " );
			 soap_print_fault(ctx, stderr);
			 printf("\n%d", ctx->error);
			 printf("\n1: SOAP faultcode = %s\n", *soap_faultcode(ctx));
			 printf("2: SOAP faultstring = %s\n", *soap_faultstring(ctx));
			 printf("3: SOAP faultdetail = %s\n\n", *soap_faultdetail(ctx));
			 soap_print_fault_location(ctx, stderr);

	   }
	  
	   else
	   {
			 printf("Success !!!");
			 json_write(ctx, &response);
	   }

	   soap_destroy(ctx);
	   soap_end(ctx);
	   soap_free(ctx);
	   return 0;

}