#c# #wsdl #netsuite #suitetalk
#c# #wsdl #netsuite #suitetalk
Вопрос:
Предыстория: в настоящее время я являюсь администратором Netsuite (не разработчиком), имею опыт программирования на PHP и MySQL и разработки интерфейса WordPress. Я работал с некоторыми из Apache Freemarker в расширенных шаблонах HTML / PDF и изучал основы C #, Java и т. Д. В свободное время. В настоящее время я работаю графическим дизайнером / дизайнером веб-сайтов / администратором Netsuite с длинным списком других задач, связанных с ИТ. Теперь мне было поручено либо выяснить, как создать это приложение, либо найти кого-то другого, кто это сделает.
Я работаю над попыткой создания приложения между Netsuite и servizi_xchange (программное обеспечение ICON).
Мне была предоставлена информация о WSDL как для Netsuite, так и для Servizi. Насколько я понимаю, это должна быть простая интеграция, учитывая объем предоставленной мне информации. Я загрузил оба WSDL в Visual Studio 2019 и начал кодирование на C #.
Я создал экземпляр службы NetSuite, включил управление файлами cookie и создал действительный сеанс, заполнив объект Passport.
К сожалению, теперь я получаю исключение System.Net.WebException: «Запрос не выполнен со статусом HTTP 410: пропал».
using System.Threading.Tasks;
using Netsuite_Test.com.netsuite.webservices;
namespace Netsuite
{
class Console
{
static void Main(string[] args)
{
// Create NetSuiteService instance
NetSuiteService _service = new NetSuiteService(); // Create CookieContainer for keeping session information
_service.CookieContainer = new System.Net.CookieContainer();
// Create Passport
Passport passport = new Passport();
passport.account = ""; //removed for privacy
passport.email = ""; //removed for privacy
passport.password = ""; //removed for privacy
// Log in
SessionResponse response_login = _service.login(passport);
if (response_login.status.isSuccess) {
// Create an example reference to Customer ID 100
RecordRef recref = new RecordRef();
recref.type = RecordType.customer;
recref.typeSpecified = true;
recref.internalId = "100"; // Fetch Customer record
ReadResponse response_get = _service.get(recref);
// Log out
_service.logout(); }else {
// Authentication failed
}
}
}
}
Компания, которая должна помогать внедрять программное обеспечение, сообщила мне, что они никогда не интегрировались с Netsuite, и теперь сказали мне, что я сам должен разобраться в этом.
Я мог бы использовать как можно больше помощи, при этом любые ресурсы, которые кто-либо может предоставить, будут полезны для начала работы.
Я прочитал документацию Netsuite в отношении веб-служб SOAP и попытался загрузить SOAP.Примеры Net и понятия не имею, как их открыть (это msi-файл, который просто устанавливается и ничего не делает, чтобы мне помочь).
Ответ №1:
Вероятно, вам нужно установить URL-адрес для службы в качестве URL-адреса, специфичного для вашей учетной записи. Вот пример, в котором при каждом входе в систему используются учетные данные паспорта, а не метод входа в систему:
var ns = new NetSuiteService()
{
Url = "https://<ACCOUNTID>.suitetalk.api.netsuite.com/services/NetSuitePort_2019_2",
passport = new Passport()
{
account = "<ACCOUNTID>",
email = "<EMAIL>",
password = "<PASSWORD>",
role = new RecordRef() {internalId = "3"},
},
applicationInfo = new ApplicationInfo() {applicationId = "<APPLICATIONID>"},
};
var customerRef = new RecordRef()
{
type = RecordType.customer,
typeSpecified = true,
internalId = "100"
};
var response = ns.get(customerRef);
if (response.status.isSuccess)
{
var customer = response.record as Customer;
Console.WriteLine(customer.companyName);
}
Идентификатор приложения можно настроить в NetSuite в разделе Настройка> Интеграция> Управление интеграциями> Создать