, как вы должны это сделать.
Если вы используете RESTfull API в C#, вы можете сделать это, отправив прямой вызов HTTPS на обслуживание сейчас.
Но все усложняется, когда вы используете SOAP API
Пока вы импортирование веб-сервис для вашей программы он включает в себя следующие XML-коду к App.config или Web.config в зависимости от вашего намерения приложения (веб-приложение или отдельное приложение).
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="ServiceNowSoap">
<security mode="Transport" />
</binding>
<binding name="ServiceNowSoap1" />
</basicHttpBinding>
</bindings>
<client>
<endpoint address="https://XXXXXXXX.service-now.com/service_subscribe_sys_user_list.do?SOAP"
binding="basicHttpBinding" bindingConfiguration="ServiceNowSoap"
contract="ServiceReference1.ServiceNowSoap" name="ServiceNowSoap" />
</client>
</system.serviceModel>
Прежде всего, если вы ожидаете, чтобы иметь большой набор записей, которые будут извлекаться вам необходимо увеличить размер Max Полученное сообщение Размер.
для этого вам нужно отредактировать тег как следующий
<binding name="ServiceNowSoap" maxReceivedMessageSize="2000000000">
Следующая часть добавляет displayvalue = все в URL.
Мы не можем редактировать URL-адрес конечной точки, используя XML-файл, вместо этого вы можете удалить URL-адрес и добавить его в качестве ключевого значения. Но все-таки вы не можете добавить параметры в URL с & знака вам нужно хранить значения в виде отдельных клавиш и объединить его жгутами программы, чтобы получить полный адрес
Окончательной XML будет как этого
<configuration>
<appSettings>
<add key="serviceNowUrl"
value="https://XXXXXXXX.service-now.com/service_subscribe_sys_user_list.do?"/>
<add key="displayvalue" value="displayvalue=true"/>
<add key="protocol" value="SOAP"/>
</appSettings>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="ServiceNowSoap" maxReceivedMessageSize="2000000000">
<security mode="Transport">
<transport clientCredentialType="Basic" proxyCredentialType="Basic"
realm="">
<extendedProtectionPolicy policyEnforcement="Never" />
</transport>
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
<binding name="ServiceNowSoap1" />
</basicHttpBinding>
</bindings>
<client>
<endpoint binding="basicHttpBinding" bindingConfiguration="ServiceNowSoap"
contract="Service_Now_Reference.ServiceNowSoap" name="ServiceNowSoap" />
</client>
</system.serviceModel>
</configuration>
Вы можете соберите url следующим образом:
string url = ConfigurationSettings.AppSettings["serviceNowUrl"];
string protocol = ConfigurationSettings.AppSettings["protocol"];
string displayvalue = ConfigurationSettings.AppSettings["displayvalue"];
System.ServiceModel.EndpointAddress endpoint = new System.ServiceModel.EndpointAddress(string.Format("{0}{1}{2}", url, protocol, displayvalue));
Hi Sandaru, Можете ли вы предоставить более подробную информацию? В частности, URL-адрес вы делаете запросы? Как выглядит HTTP-запрос? Вы создали ServiceNowSoapClient из WSDL? – Bryan
yah im using WSDL. URL-адрес: https://XXXXXXXX.service-now.com/service_subscribe_sys_user_list.do?WSDL – Sandaru
Спасибо, все еще можно использовать больше информации, чтобы сказать наверняка, но я предполагаю, что обновление URL-адреса вы вытаскиваете WSDL, чтобы включить 'displayvalue = all' (см.: Http://wiki.servicenow.com/?title= Direct_Web_Services # Return_Display_Value_for_Reference_Variables) поможет. Это также поможет, если вы сможете захватить образец HTTP-запроса, отправляемого вашим приложением C#, и включить его в вопрос здесь. Если вы делаете это, убедитесь, что вы удаляете все учетные данные в заголовках. – Bryan