Ошибка При Вызове Внешнего Веб Сервиса

Тема в разделе "Lotus - Программирование", создана пользователем RenatAhmetshin, 31 июл 2014.

  1. RenatAhmetshin

    Регистрация:
    31 июл 2014
    Сообщения:
    12
    Симпатии:
    0
    Всем доброе время суток: пытаюсь вызвать внешний сервис UPS для получения стоимости курьерской доставки. Для вызова сервиса используются логин и пароль, которые были присланы мне по почте от UPS. Передаю их в сервис через стандартный метод setcredentials:

    Call resparams.Setcredentials("Login", "P@ssw0rd").

    Но, к сожалению, сервис не запускается по следующей ошибке:

    ProcessRate error:Web Service RatePortType_n4 method ProcessRate error (401) Authorization Required

    Получается, что не проходит basic- аутентификация, но не понятно почему так происходит.

    Под soapui указанный сервис работает корректно.

    Подскажите пожалуйста в чём может быть проблема.
     
  2. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    resparams.Setcredentials что это такое? выб рассказали откудова код
     
  3. RenatAhmetshin

    Регистрация:
    31 июл 2014
    Сообщения:
    12
    Симпатии:
    0
    Resparams - объект класса PorttypeBase , в котором находится вызываемый метод ProcessRate.


    Код (LotusScript):
    Dim resparams As New Rateporttype_n4

    ' вызов процедуры
    Call resparams.Setcredentials("Login", "P@ssw0rd")

    Set res = resparams.Processrate(inparams, upsec, Fault1)

    inparams , upsec , Fault1 - переменные классов, содержащих в себе данные для обработки веб-сервисом.

    Функция падает на вызове метода Processrate, а именно в строке Consumer' а:

    Class RatePortType_n4 As PortTypeBase

    Sub NEW


    Call Service.Initialize ("HttpWwwUpsComWSDLXOLTWSRateV11RateService", _
    "RateService.RatePort", "https://wwwcie.ups.com/webservices/Rate", _
    "RatePortType_n4")

    End Sub

    Function ProcessRate(Body As RateRequest_n0, UPSSecurity As UPSSecurity_n2, Fault1 As Errors_n1) As RateResponse_n0

    [b]Set ProcessRate = Service.Invoke("ProcessRate", Body, UPSSecurity, Fault1)[/b]

    End Function

    End Class
     
  4. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    из вас по крупицам надо инфу тянуть :eek:fftop:? неужели не очевидно - интересует источник
    кто является клиентом вебсервиса? я так кода и не увидел
     
  5. garrick

    garrick Lotus team
    Lotus team

    Регистрация:
    26 окт 2009
    Сообщения:
    770
    Симпатии:
    50
  6. RenatAhmetshin

    Регистрация:
    31 июл 2014
    Сообщения:
    12
    Симпатии:
    0
    Такую методику делали уже 100 раз, у нас все сервисы так работают и всё хорошо. А во именно с этим такая проблема.
    <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">"Вот код"</div></div><div class="sp-body"><div class="sp-content">
    Код (LotusScript):
    Sub CalculateCharge (curdoc As NotesDocument)
    On Error GoTo errprocess

    Dim upsec As New Upssecurity_n2
    Dim upssectoken As New UPSSecurity_UsernameToken_n2
    Dim accesstoken As New UPSSecurity_ServiceAccessToken_n2
    Dim inparams As New Raterequest_n0
    Dim req As New RequestType_n3
    Dim ship As New Shipmenttype_n0
    Dim sh As New ShipperType_n0
    Dim resparams As New Rateporttype_n4
    Dim res As new RateResponse_n0
    Dim shiptoparams As New Shiptotype_n0
    Dim shipfrom As New Shipfromtype_n0
    Dim packtype As New Packagetype_n0
    Dim pk As New CodeDescriptionType_n0
    Dim pkserv As New PackageServiceOptionsType_n0
    Dim codedescr As New CodeDescriptionType_n0
    Dim dimparams As New Dimensionstype_n0
    Dim dimunit As New CodeDescriptionType_n0
    Dim addrtype As New AddressType_n0
    Dim shaddrtype As New ShipToAddressType_n0
    Dim declval As New InsuredValueType_n0
    Dim Fault1 As New Errors_n1
    ' логин и пароль во входные параметры - брать из настроечного документа

    upssectoken.Username = "***"
    upssectoken.Password = "***"   
    Set upsec.Usernametoken = upssectoken

    ReDim req.Requestoption(0)
    ReDim addrtype.Addressline(0)

    accesstoken.Accesslicensenumber = "*"
    Set upsec.Serviceaccesstoken = accesstoken

    ' данные о компании- отправителе
    req.Requestoption(0) = "Rate"
    Set inparams.Request = req


    Set sh.Name = New Xsd_string
    Call sh.Name.Setvaluefromstring("***")

    set sh.Shippernumber = New Xsd_string
    Call sh.Shippernumber.Setvaluefromstring("***")


    addrtype.Countrycode = "RU"

    Print {addrtype.Countrycode = "RU"}
    addrtype.Addressline(0) = "Yunost street h.13 k.2"
    Set addrtype.City = New Xsd_string
    Call addrtype.City.Setvaluefromstring("Moscow")

    Set addrtype.Postalcode = New Xsd_string
    Call addrtype.Postalcode.Setvaluefromstring("111395")

    addrtype.Countrycode = "RU"

    Set ship.Shipper = sh
    Set ship.Shipper.Address = addrtype
    '=====================================================


    ' куда отправляем

    ReDim shaddrtype.Addressline(0)

    shaddrtype.Addressline(0) = curdoc.Getitemvalue("To_Address")(0)

    Set shaddrtype.Postalcode = New Xsd_string
    shaddrtype.Postalcode.Setvaluefromstring(curdoc.Getitemvalue("To_Index")(0))

    shaddrtype.Countrycode = "RU"

    Set shaddrtype.City = New Xsd_string
    shaddrtype.City.Setvaluefromstring(curdoc.Getitemvalue("To_City")(0))

    'Set shaddrtype = addrtype
    Set shiptoparams.Address = shaddrtype
    '=====================================================
    ' откуда отправляем
    Set addrtype = New AddressType_n0
    ReDim addrtype.Addressline(0)

    addrtype.Addressline(0) = curdoc.Getitemvalue("From_Address")(0)

    Set addrtype.Postalcode = New Xsd_string
    addrtype.Postalcode.Setvaluefromstring(curdoc.Getitemvalue("From_Index")(0))

    addrtype.Countrycode = "RU"

    Set addrtype.City = New Xsd_string
    Call addrtype.City.Setvaluefromstring(curdoc.Getitemvalue("From_City")(0))


    Set shipfrom.Address = addrtype
    '===================================================== 
    ' тип сервиса
    codedescr.Code = "65"
    Set ship.Service = codedescr
    '===================================================== 


    Set ship.Shipfrom = shipfrom
    Set ship.Shipto = shiptoparams
    Set inparams.Shipment = ship

    ' тип упаковки
    pk.Code = curdoc.Getitemvalue("Corresp_Type")(0)
    Set packtype.Packagingtype = pk

    ' если коробка .то необходимо укаазать размеры и вес
    If curdoc.Getitemvalue("Corresp_Type")(0) = "02" Then
    Set dimparams.Height= New Xsd_string
    Call dimparams.Height.Setvaluefromstring(CStr(curdoc.Height(0)))

    Set dimparams.Length = New Xsd_string
    Call dimparams.Length.Setvaluefromstring(CStr(curdoc.Length(0)))

    Set dimparams.Width = New Xsd_string
    Call dimparams.Height.Setvaluefromstring(CStr(curdoc.Width(0)))

    dimunit.Code = "CM"
    Set dimparams.Unitofmeasurement = dimunit
    ' вес коробки
    packtype.Packageweight.Unitofmeasurement.Code = "KGS"
    packtype.Packageweight.Weight = CStr (curdoc.Getitemvalue("Weight")(0))

    End If

    Set packtype.Dimensions = dimparams
    '===================================================== 
    declval.Currencycode = "RUB"
    declval.Monetaryvalue = "0"
    Set pkserv.Declaredvalue = declval

    Set packtype.Packageserviceoptions = pkserv

    '===================================================== 
    ReDim inparams.Shipment.Package(0)
    Set inparams.Shipment.Package(0) = packtype

    ' вызов процедуры
    Call resparams.Setcredentials("user", "login")
    Call resparams.Setssloptions(NOTES_SSL_ACCEPT_SITE_CERTS+NOTES_SSL_ACCEPT_EXPIRED_CER
    TS)
    Set res = resparams.Processrate(inparams, upsec, Fault1)
    MsgBox resparams.Getlastfault().Getfaultcode()
    'If Fault1.Errordetail(0).Primaryerrorcode.Code <> "" Then
    '   MsgBox {Ошибка при обработке: }+Fault1.Errordetail(0).Primaryerrorcode.Description , 16 , "Ошибка при отработке"
    'Else
    '   MsgBox {Результат расчёта: }+res.Ratedshipment(0).Totalcharges.Monetaryvalue ,64 ,"Результат расчёта"
    'End If


    Exit Sub
    errprocess:
    MsgBox {Ошибка при расчёте стоимости доставки: }+CStr(Error)+Chr(13)+_
    { Код ошибки: }+CStr(Err)+Chr(13)+_
    {Строка ошибки: }+CStr(Erl) , 16 , "Ошибка"

    Exit sub
    End Sub
     
  7. garrick

    garrick Lotus team
    Lotus team

    Регистрация:
    26 окт 2009
    Сообщения:
    770
    Симпатии:
    50
    Что такое Rateporttype_n4?
     
  8. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    надысь, после обновления ФФ, столкнулся с траблой - меня не пускал наш корпоративный цайт
    оказалось - он требовал аутентификацию посекурити ниже, чем ФФ хотел отдавать (пришлось конфиг ФФ править)
    а результатом был посыл меня с ноавторайзед
    возможно это и не имеет отношения к проблеме

    Добавлено: к чему я завел этот разговор - может трабла в несостыковке секуритей (цайт может просить больше, чем стандартные классы нотусни отдают)
     
  9. RenatAhmetshin

    Регистрация:
    31 июл 2014
    Сообщения:
    12
    Симпатии:
    0
    Переписал процедуру на java. Теперь у меня java- агент вызывает методы сервиса. Ошибка 401 Authorization Required пропала и теперь вроде бы сервис вызывается, но возвращает другой стек ошибок:
    WebServiceEngineFault
    faultCode: Client
    faultSubcode:
    faultString: An exception has been raised as a result of client data.
    faultActor:
    faultNode:
    faultDetail:
    {http://www.ups.com/XMLSchema/XOLTWS/Error/v1.1}Errors: <err:ErrorDetail><err:Severity></err:Severity><err:primaryErrorCode><err:Code></err:Code><err:Description></err:Description></err:primaryErrorCode></err:ErrorDet<!--shcode--><pre><code class='<b></b>'>WebServiceEngineFault
    faultCode: Client
    faultSubcode:
    faultString: An exception has been raised as a result of client data.
    faultActor:
    faultNode:
    faultDetail:
    {http://www.ups.com/XMLSchema/XOLTWS/Error/v1.1}Errors: <err:ErrorDetail><err:Severity></err:Severity><err:primaryErrorCode><err:Code></err:Code><err:Description></err:Description></err:primaryErrorCode></err:ErrorDetail>

    An exception has been raised as a result of client data.
    at java.lang.J9VMInternals.newInstanceImpl(Native Method)
    at java.lang.Class.newInstance(Class.java:1547)
    at lotus.domino.axis.encoding.ser.BeanDeserializer.<init>(Unknown Source)
    at lotus.domino.axis.encoding.ser.V3BeanDeserializerFactory.getGeneralPurpose(Unknown Source)
    at lotus.domino.axis.encoding.ser.BaseDeserializerFactory.getDeserializerAs(Unknown Source)
    at lotus.domino.axis.encoding.ser.BeanDeserializerFactory.getDeserializerAs(Unknown Source)
    at lotus.domino.axis.encoding.DeserializationContextImpl.getDeserializer(Unknown Source)
    at lotus.domino.axis.encoding.DeserializationContextImpl.getDeserializerForType(Unknown Source)
    at lotus.domino.axis.message.SOAPFaultDetailsBuilder.onStartChild(Unknown Source)
    at lotus.domino.axis.encoding.DeserializationContextImpl.startElement(Unknown Source)
    at org.apache.xerces.parsers.AbstractSAXParser.startElement(Unknown Source)
    at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source)
    at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
    at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
    at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
    at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
    at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
    at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
    at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
    at org.apache.xerces.jaxp.SAXParserImpl.parse(Unknown Source)
    at lotus.domino.axis.encoding.DeserializationContextImpl.parse(Unknown Source)
    at lotus.domino.axis.SOAPPart.getAsSOAPEnvelope(Unknown Source)
    at lotus.domino.axis.Message.getSOAPEnvelope(Unknown Source)
    at lotus.domino.axis.client.Call.invokeEngine(Unknown Source)
    at lotus.domino.axis.client.Call.invoke(Unknown Source)
    at lotus.domino.axis.client.Call.invoke(Unknown Source)
    at lotus.domino.axis.client.Call.invoke(Unknown Source)
    at lotus.domino.axis.client.Call.invoke(Unknown Source)
    at lotus.domino.websvc.client.Call.invoke(Unknown Source)
    at com.ups.www.WSDL.XOLTWS.Rate.v1_1.RateBindingStub.processRate(Unknown Source)
    at JavaAgent.NotesMain(Unknown Source)
    at lotus.domino.AgentBase.runNotes(Unknown Source)
    at lotus.domino.NotesThread.run(Unknown Source)[/CODE]ail>

    An exception has been raised as a result of client data.
    at java.lang.J9VMInternals.newInstanceImpl(Native Method)
    at java.lang.Class.newInstance(Class.java:1547)
    at lotus.domino.axis.encoding.ser.BeanDeserializer.<init>(Unknown Source)
    at lotus.domino.axis.encoding.ser.V3BeanDeserializerFactory.getGeneralPurpose(Unkno
    wn Source)
    at lotus.domino.axis.encoding.ser.BaseDeserializerFactory.getDeserializerAs(Unknown Source)
    at lotus.domino.axis.encoding.ser.BeanDeserializerFactory.getDeserializerAs(Unknown Source)
    at lotus.domino.axis.encoding.DeserializationContextImpl.getDeserializer(Unknown Source)
    at lotus.domino.axis.encoding.DeserializationContextImpl.getDeserializerForType(Unk
    nown Source)
    at lotus.domino.axis.message.SOAPFaultDetailsBuilder.onStartChild(Unknown Source)
    at lotus.domino.axis.encoding.DeserializationContextImpl.startElement(Unknown Source)
    at org.apache.xerces.parsers.AbstractSAXParser.startElement(Unknown Source)
    at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source)
    at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
    at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
    at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
    at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
    at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
    at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
    at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
    at org.apache.xerces.jaxp.SAXParserImpl.parse(Unknown Source)
    at lotus.domino.axis.encoding.DeserializationContextImpl.parse(Unknown Source)
    at lotus.domino.axis.SOAPPart.getAsSOAPEnvelope(Unknown Source)
    at lotus.domino.axis.Message.getSOAPEnvelope(Unknown Source)
    at lotus.domino.axis.client.Call.invokeEngine(Unknown Source)
    at lotus.domino.axis.client.Call.invoke(Unknown Source)
    at lotus.domino.axis.client.Call.invoke(Unknown Source)
    at lotus.domino.axis.client.Call.invoke(Unknown Source)
    at lotus.domino.axis.client.Call.invoke(Unknown Source)
    at lotus.domino.websvc.client.Call.invoke(Unknown Source)
    at com.ups.www.WSDL.XOLTWS.Rate.v1_1.RateBindingStub.processRate(Unknown Source)
    at JavaAgent.NotesMain(Unknown Source)
    at lotus.domino.AgentBase.runNotes(Unknown Source)
    at lotus.domino.NotesThread.run(Unknown Source)



    Вот сам код агента:

    import com.ups.www.XMLSchema.XOLTWS.Rate.v1_1.*;
    import com.ups.www.XMLSchema.XOLTWS.Common.v1_0.*;
    import com.ups.www.XMLSchema.XOLTWS.Rate.v1_1.CodeDescriptionType;
    import com.ups.www.WSDL.XOLTWS.Rate.v1_1.RateServiceLocator;
    import com.ups.www.XMLSchema.XOLTWS.UPSS.v1_0.*;

    import lotus.domino.*;

    public class JavaAgent extends AgentBase {

    Session session;
    Database db ;
    String wssearchkey ;
    ShipmentType shipment;
    _RateRequest raterequest;
    _RateResponse rateresponse;
    RequestType requestType ;
    public void NotesMain() {

    try {
    Document setdoc ;
    session = getSession();
    db = session.getCurrentDatabase();
    wssearchkey = "UPSWebServiceSetting".toLowerCase();
    AgentContext agentContext = session.getAgentContext();
    // (Your code goes here)
    Document demand = db.getDocumentByID(agentContext.getCurrentAgent().getParameterDocID());

    if (demand== null) {
    System.out.println("Не найден документ");
    return;
    };
    // System.out.println("Нашли документ для обработки");
    setdoc = this.getsettingdoc();
    if (setdoc == null) return;
    //******************************************************
    // System.out.println("записываем параметры безопасности");
    _UPSSecurity upssec = new _UPSSecurity ();
    upssec = this.getupssecurityparams(setdoc);
    if (upssec== null) return;
    //******************************************************
    //System.out.println("генерируем запрос");
    raterequest = this.generaterequest(demand, setdoc);
    if (raterequest == null){
    System.out.println("raterequest == null");
    return;
    };
    //System.out.println(raterequest.getRequest().getRequestOption(0).toString());

    // System.out.println("запуск самого сервиса");
    // запуск самого сервиса

    System.out.println("getShipTo CountryCode: "+raterequest.getShipment().getShipTo().getAddress().getCountryCode());
    System.out.println("getShipTo getPostalCode: "+raterequest.getShipment().getShipTo().getAddress().getPostalCode());
    System.out.println("getShipTo getAddressLine: "+raterequest.getShipment().getShipTo().getAddress().getAddressLine(0));

    System.out.println("Shipper CountryCode: "+raterequest.getShipment().getShipper().getAddress().getCountryCode());
    System.out.println("Shipper getPostalCode: "+raterequest.getShipment().getShipper().getAddress().getPostalCode());
    System.out.println("Shipper getAddressLine: "+raterequest.getShipment().getShipper().getAddress().getAddressLine(0));

    System.out.println("getLength"+raterequest.getShipment().get_package(0).getDimensions().getLength());

    RateServiceLocator rr = new RateServiceLocator ();
    //com.ups.www.WSDL.XOLTWS.Rate.v1_1.RatePortType stub = rr.getRatePort();
    // URL portaddr = new URL ("https://wwwcie.ups.com/webservices/Rate");
    rr.getRatePort().setCredentials(setdoc.getItemValueString("USERNAME"), setdoc.getItemValueString("USERPASSWORD"));


    if (upssec == null) {
    System.out.println("upssec is nothing");
    return;
    };

    // данные о параметрах безопасности
    System.out.println("getAccessLicenseNumber "+upssec.getServiceAccessToken().getAccessLicenseNumber());
    System.out.println("getUsernameToken UserName "+upssec.getUsernameToken().getUsername());
    System.out.println("getUsernameToken Password "+upssec.getUsernameToken().getPassword());
    if (raterequest== null) {
    System.out.println("raterequest== null");
    return;
    };

    rateresponse = rr.getRatePort().processRate(raterequest, upssec);

    System.out.println ("Статус"+ rateresponse.getResponse().getResponseStatus().toString());
    } catch(Exception e) {
    System.out.println("Error in AgentBase: ");
    e.printStackTrace();
    }
    };


    //====================================================
    private Document getsettingdoc () {
    try {
    // System.out.println("получение setview");
    View setview = db.getView("(WSSETView)");
    if (setview==null) {
    System.out.println("setview is null");
    return null;
    };
    // System.out.println("wssearchkey = "+wssearchkey);
    Document setdoc = setview.getDocumentByKey(wssearchkey, true);

    if (setdoc == null) return null;

    return setdoc;

    } catch (NotesException err) {
    System.out.println("Error in function 'getsettingdoc': "+err.toString());
    return null;
    }
    }
    //====================================================
    private _UPSSecurity getupssecurityparams (Document setdoc){
    try {
    _UPSSecurity usec = new _UPSSecurity ();

    _UPSSecurity_UsernameToken upsusnametoken = new _UPSSecurity_UsernameToken ();
    _UPSSecurity_ServiceAccessToken upsservaccesstoken = new _UPSSecurity_ServiceAccessToken ();
    // прописываем логин и пароль
    upsusnametoken.setUsername(setdoc.getItemValueString("USERNAME"));
    upsusnametoken.setPassword(setdoc.getItemValueString("USERPASSWORD"));

    // ключ договора
    upsservaccesstoken.setAccessLicenseNumber(setdoc.getItemValueString("AccessLicenseNumber"));

    usec.setServiceAccessToken(upsservaccesstoken);
    usec.setUsernameToken(upsusnametoken);

    return usec;

    } catch (NotesException err) {
    System.out.println("Error in function 'getupssecurityparams': "+err.toString());
    return null;
    }

    }
    //====================================================
    private _RateRequest generaterequest(Document demanddoc , Document setdoc) {
    try {
    System.out.println("generaterequest start");
    _RateRequest grequest = new _RateRequest ();
    System.out.println("grequest");
    requestType = new RequestType ();
    // System.out.println("RequestType setdoc"+setdoc.getItemValueString("REQUESTOPTION"));

    String str [] = {"Rate",""};
    requestType.setRequestOption(str);
    // System.out.println(grequest.getRequest().getRequestOption(0).toString());
    // формирование параметров для отправки
    shipment = this.generateshipmentparameters(demanddoc, setdoc);
    if (shipment == null) return null;
    grequest.setShipment(shipment);
    // System.out.println("grequest getShipperNumber"+grequest.getShipment().getShipper().getShipperNumber().toLowerCase());
    // System.out.println(grequest.getShipment().getService().getCode());
    return grequest ;
    } catch (Exception e) {
    System.out.println("Error in 'generaterequest': "+e.toString());
    return null ;
    }

    };
    //====================================================
    private ShipmentType generateshipmentparameters (Document demanddoc , Document setdoc) {
    try {
    // System.out.println ("generateshipmentparameters start");

    ShipmentType shipment1 = new ShipmentType ();; // парметры отгрузки
    ShipperType shipper = new ShipperType ();
    ShipToType shipTo = new ShipToType ();
    ShipFromType shipFrom = new ShipFromType ();
    CodeDescriptionType service = new CodeDescriptionType ();
    PackageType _package = new PackageType ();


    AddressType adr = new AddressType ();
    ShipToAddressType shiptoaddress = new ShipToAddressType ();
    // данные об отправителе
    // System.out.println ("данные об отправителе");
    String fromloc = demanddoc.getItemValueString("FromLocation");
    shipper.setName(fromloc);
    // System.out.println ("Проставили наименование отправителя");
    shipper.setShipperNumber(demanddoc.getItemValueString("ShipperNumber"));
    // System.out.println ("Проставили ShipperNumber");
    String cc [] = {demanddoc.getItemValueString("From_Address"),""};
    adr.setAddressLine(cc);
    adr.setCity(demanddoc.getItemValueString("FromTown")); // город откуда отправляем
    // System.out.println ("город откуда");
    adr.setCountryCode(setdoc.getItemValueString("CountryCode")); // код страны откуда отправляем
    // System.out.println ("код страны откуда отправляем");
    adr.setPostalCode(demanddoc.getItemValueString("FromZip"));
    // System.out.println ("индекс города откуда отправляем");
    shipper.setAddress(adr);
    // System.out.println ("Проставили Адресные данные");
    //-------------------------------------------//
    // данные о получателе
    // System.out.println ("данные о получателе");
    String tolocation = demanddoc.getItemValueString("ToLocation");
    shipTo.setName(tolocation);
    String cc1 [] = {demanddoc.getItemValueString("To_Address"),""};
    shiptoaddress.setAddressLine(cc1);
    shiptoaddress.setCity(demanddoc.getItemValueString("ToTown")); // город куда отправляем
    shiptoaddress.setCountryCode(setdoc.getItemValueString("CountryCode")); // код страны откуда отправляем
    shiptoaddress.setPostalCode(demanddoc.getItemValueString("To_Index"));

    shipTo.setAddress(shiptoaddress);
    //-------------------------------------------//
    // данные об отправителе
    System.out.println ("данные от кого");
    shipFrom.setName(fromloc);
    adr.setAddressLine(cc);
    adr.setCity(demanddoc.getItemValueString("FromTown")); // город откуда отправляем
    adr.setCountryCode(setdoc.getItemValueString("CountryCode")); // код страны откуда отправляем
    adr.setPostalCode(demanddoc.getItemValueString("From_Index"));
    shipFrom.setAddress(adr);

    //--------------------------------------------------------------
    // код типа сервиса
    // System.out.println ("код типа сервиса");
    service.setCode(setdoc.getItemValueString("ServiceCode"));

    //данные об отправляемом объекте
    // System.out.println ("данные об отправляемом объекте");
    CodeDescriptionType packagingType = new CodeDescriptionType ();
    // System.out.println("Corresp_Type = "+demanddoc.getItemValueString("Corresp_Type"));
    // if (demanddoc.getItemValueString("Corresp_Type") == "01") {
    // packagingType.setCode("01"); // письмо
    if (demanddoc.getItemValueString("Corresp_Type") == "02"){
    // packagingType.setCode("02"); // коробка
    com.ups.www.XMLSchema.XOLTWS.Rate.v1_1.DimensionsType dimensions = new com.ups.www.XMLSchema.XOLTWS.Rate.v1_1.DimensionsType ();
    dimensions.setHeight(demanddoc.getItemValueString("Height"));
    dimensions.setLength(demanddoc.getItemValueString("Length"));
    dimensions.setWidth(demanddoc.getItemValueString("Width"));
    CodeDescriptionType cdtype = new CodeDescriptionType ();

    cdtype.setCode(setdoc.getItemValueString("unitOfMeasurementCode"));
    dimensions.setUnitOfMeasurement(cdtype);

    // вес коробки
    PackageWeightType PackageWeight = new PackageWeightType();
    cdtype.setCode(setdoc.getItemValueString("unitOfWeightCode"));
    PackageWeight.setUnitOfMeasurement(cdtype); // размерность веса
    PackageWeight.setWeight(demanddoc.getItemValueString("Weight"));

    _package.setPackageWeight(PackageWeight);
    _package.setDimensions(dimensions);
    } else {
    DimensionsType dimensions = new DimensionsType ();
    dimensions.setHeight("0");
    dimensions.setLength("0");
    dimensions.setWidth("0");
    CodeDescriptionType cdtype = new CodeDescriptionType ();

    cdtype.setCode(setdoc.getItemValueString("unitOfMeasurementCode"));
    dimensions.setUnitOfMeasurement(cdtype);

    // вес коробки
    PackageWeightType PackageWeight = new PackageWeightType();
    cdtype.setCode(setdoc.getItemValueString("unitOfWeightCode"));
    PackageWeight.setUnitOfMeasurement(cdtype); // размерность веса
    PackageWeight.setWeight("0");

    _package.setPackageWeight(PackageWeight);
    _package.setDimensions(dimensions);

    };
    packagingType.setCode(demanddoc.getItemValueString("Corresp_Type"));
    _package.setPackagingType(packagingType);
    PackageType ptype [] = {_package};


    // System.out.println ("запись параметров");
    if (shipment1 == null) {
    System.out.println ("shipment is null");
    return null;
    };

    shipment1.setService(service);
    System.out.println ("service");
    shipment1.setShipper(shipper);
    System.out.println ("shipper");
    shipment1.setShipFrom(shipFrom);
    System.out.println ("shipFrom");
    shipment1.setShipTo(shipTo);
    System.out.println ("shipTo");
    shipment1.set_package(ptype);

    System.out.println ("set_package");
    // System.out.println ("generateshipmentparameters end");


    return shipment1 ;

    } catch (Exception err) {
    System.out.println("Error in function 'generateshipmentparameters': "+err.toString());
    return null;
    }

    }
    }
     
  10. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    RenatAhmetshin оформляйте код, для этого есть spoiler и code теги (соответ картинки)!
     
  11. garrick

    garrick Lotus team
    Lotus team

    Регистрация:
    26 окт 2009
    Сообщения:
    770
    Симпатии:
    50
    Не по теме. Просто офигеваю от таких штук:

    Код (Text):
    wssearchkey = "UPSWebServiceSetting".toLowerCase();
    Что помешало сразу маленькими буквами написать? Или по принципу "компьютер железный, что ему будет, пусть работает"?

    Дальше не осилил - много букв в одну строчку...
     
  12. RenatAhmetshin

    Регистрация:
    31 июл 2014
    Сообщения:
    12
    Симпатии:
    0
    <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">agent</div></div><div class="sp-body"><div class="sp-content"><!--shcode--><pre><code class='java'>import com.ups.www.XMLSchema.XOLTWS.Rate.v1_1.*;
    import com.ups.www.XMLSchema.XOLTWS.Common.v1_0.*;
    import com.ups.www.XMLSchema.XOLTWS.Rate.v1_1.CodeDescriptionType;
    import com.ups.www.WSDL.XOLTWS.Rate.v1_1.RateServiceLocator;
    import com.ups.www.XMLSchema.XOLTWS.UPSS.v1_0.*;

    import lotus.domino.*;

    public class JavaAgent extends AgentBase {

    Session session;
    Database db;
    String wssearchkey;
    ShipmentType shipment;
    _RateRequest raterequest;
    _RateResponse rateresponse;
    RequestType requestType;

    public void NotesMain() {

    try {
    Document setdoc;
    session = getSession();
    db = session.getCurrentDatabase();
    wssearchkey =\"UPSWebServiceSetting\".toLowerCase();
    AgentContext agentContext = session.getAgentContext();
    // (Your code goes here)
    Document demand = db.getDocumentByID(agentContext.getCurrentAgent().getParameterDocID());

    if (demand == null) {
    System.out.println(\"Не найден документ\");
    return;
    };
    // System.out.println(\"Нашли документ для обработки\");
    setdoc = this.getsettingdoc();
    if (setdoc == null) return;
    //******************************************************
    // System.out.println(\"записываем параметры безопасности\");
    _UPSSecurity upssec = new _UPSSecurity();
    upssec = this.getupssecurityparams(setdoc);
    if (upssec == null) return;
    //******************************************************
    //System.out.println(\"генерируем запрос\");
    raterequest = this.generaterequest(demand, setdoc);
    if (raterequest == null) {
    System.out.println(\"raterequest == null\");
    return;
    };
    //System.out.println(raterequest.getRequest().getRequestOption(0).toString());

    // System.out.println(\"запуск самого сервиса\");
    // запуск самого сервиса

    System.out.println(\"getShipTo CountryCode: \"+raterequest.getShipment().getShipTo().getAddress().getCountryCode());
    System.out.println(\"getShipTo getPostalCode: \"+raterequest.getShipment().getShipTo().getAddress().getPostalCode());
    System.out.println(\"getShipTo getAddressLine: \"+raterequest.getShipment().getShipTo().getAddress().getAddressLine(0));

    System.out.println(\"Shipper CountryCode: \"+raterequest.getShipment().getShipper().getAddress().getCountryCode());
    System.out.println(\"Shipper getPostalCode: \"+raterequest.getShipment().getShipper().getAddress().getPostalCode());
    System.out.println(\"Shipper getAddressLine: \"+raterequest.getShipment().getShipper().getAddress().getAddressLine(0));

    System.out.println(\"getLength\"+raterequest.getShipment().get_package(0).getDimensions().getLength());

    RateServiceLocator rr = new RateServiceLocator();
    //com.ups.www.WSDL.XOLTWS.Rate.v1_1.RatePortType stub = rr.getRatePort();
    // URL portaddr = new URL (\"https://wwwcie.ups.com/webservices/Rate\");
    rr.getRatePort().setCredentials(setdoc.getItemValueString(\"USERNAME\"), setdoc.getItemValueString(\"USERPASSWORD\"));


    if (upssec == null) {
    System.out.println(\"upssec is nothing\");
    return;
    };

    // данные о параметрах безопасности
    System.out.println(\"getAccessLicenseNumber \"+upssec.getServiceAccessToken().getAccessLicenseNumber());
    System.out.println(\"getUsernameToken UserName \"+upssec.getUsernameToken().getUsername());
    System.out.println(\"getUsernameToken Password \"+upssec.getUsernameToken().getPassword());
    if (raterequest == null) {
    System.out.println(\"raterequest== null\");
    return;
    };

    rateresponse = rr.getRatePort().processRate(raterequest, upssec);

    System.out.println(\"Статус\"+ rateresponse.getResponse().getResponseStatus().toString());
    } catch (Exception e) {
    System.out.println(\"Error in AgentBase: \");
    e.printStackTrace();
    }
    }

    ;


    //====================================================
    private Document getsettingdoc() {
    try {
    // System.out.println(\"получение setview\");
    View setview = db.getView(\"(WSSETView)\");
    if (setview == null) {
    System.out.println(\"setview is null\");
    return null;
    };
    // System.out.println(\"wssearchkey = \"+wssearchkey);
    Document setdoc = setview.getDocumentByKey(wssearchkey, true);

    if (setdoc == null) return null;

    return setdoc;

    } catch (NotesException err) {
    System.out.println(\"Error in function \'getsettingdoc\': \"+err.toString());
    return null;
    }
    }

    //====================================================
    private _UPSSecurity getupssecurityparams(Document setdoc) {
    try {
    _UPSSecurity usec = new _UPSSecurity();

    _UPSSecurity_UsernameToken upsusnametoken = new _UPSSecurity_UsernameToken();
    _UPSSecurity_ServiceAccessToken upsservaccesstoken = new _UPSSecurity_ServiceAccessToken();
    // прописываем логин и пароль
    upsusnametoken.setUsername(setdoc.getItemValueString(\"USERNAME\"));
    upsusnametoken.setPassword(setdoc.getItemValueString(\"USERPASSWORD\"));

    // ключ договора
    upsservaccesstoken.setAccessLicenseNumber(setdoc.getItemValueString(\"AccessLicenseNumber\"));

    usec.setServiceAccessToken(upsservaccesstoken);
    usec.setUsernameToken(upsusnametoken);

    return usec;

    } catch (NotesException err) {
    System.out.println(\"Error in function \'getupssecurityparams\': \"+err.toString());
    return null;
    }

    }

    //====================================================
    private _RateRequest generaterequest(Document demanddoc, Document setdoc) {
    try {
    System.out.println(\"generaterequest start\");
    _RateRequest grequest = new _RateRequest();
    System.out.println(\"grequest\");
    requestType = new RequestType();
    // System.out.println(\"RequestType setdoc\"+setdoc.getItemValueString(\"REQUESTOPTION\"));

    String str[] = {\"Rate\",\"\"};
    requestType.setRequestOption(str);
    // System.out.println(grequest.getRequest().getRequestOption(0).toString());
    // формирование параметров для отправки
    shipment = this.generateshipmentparameters(demanddoc, setdoc);
    if (shipment == null) return null;
    grequest.setShipment(shipment);
    // System.out.println(\"grequest getShipperNumber\"+grequest.getShipment().getShipper().getShipperNumber().toLowerCase());
    // System.out.println(grequest.getShipment().getService().getCode());
    return grequest;
    }catch(Exception e){
    System.out.println(\"Error in \'generaterequest\': \"+e.toString());
    return null;
    }

    };
    //====================================================

    private ShipmentType generateshipmentparameters(Document demanddoc, Document setdoc) {
    try {
    // System.out.println (\"generateshipmentparameters start\");

    ShipmentType shipment1 = new ShipmentType();
    ; // парметры отгрузки
    ShipperType shipper = new ShipperType();
    ShipToType shipTo = new ShipToType();
    ShipFromType shipFrom = new ShipFromType();
    CodeDescriptionType service = new CodeDescriptionType();
    PackageType _package = new PackageType();


    AddressType adr = new AddressType();
    ShipToAddressType shiptoaddress = new ShipToAddressType();
    // данные об отправителе
    // System.out.println (\"данные об отправителе\");
    String fromloc = demanddoc.getItemValueString(\"FromLocation\");
    shipper.setName(fromloc);
    // System.out.println (\"Проставили наименование отправителя\");
    shipper.setShipperNumber(demanddoc.getItemValueString(\"ShipperNumber\"));
    // System.out.println (\"Проставили ShipperNumber\");
    String cc[]={
    demanddoc.getItemValueString(\"From_Address\"),\"\"};
    adr.setAddressLine(cc);
    adr.setCity(demanddoc.getItemValueString(\"FromTown\")); // город откуда отправляем
    // System.out.println (\"город откуда\");
    adr.setCountryCode(setdoc.getItemValueString(\"CountryCode\")); // код страны откуда отправляем
    // System.out.println (\"код страны откуда отправляем\");
    adr.setPostalCode(demanddoc.getItemValueString(\"FromZip\"));
    // System.out.println (\"индекс города откуда отправляем\");
    shipper.setAddress(adr);
    // System.out.println (\"Проставили Адресные данные\");
    //-------------------------------------------//
    // данные о получателе
    // System.out.println (\"данные о получателе\");
    String tolocation = demanddoc.getItemValueString(\"ToLocation\");
    shipTo.setName(tolocation);
    String cc1[] = {demanddoc.getItemValueString(\"To_Address\"),\"\"};
    shiptoaddress.setAddressLine(cc1);
    shiptoaddress.setCity(demanddoc.getItemValueString(\"ToTown\")); // город куда отправляем
    shiptoaddress.setCountryCode(setdoc.getItemValueString(\"CountryCode\")); // код страны откуда отправляем
    shiptoaddress.setPostalCode(demanddoc.getItemValueString(\"To_Index\"));

    shipTo.setAddress(shiptoaddress);
    //-------------------------------------------//
    // данные об отправителе
    System.out.println(\"данные от кого\");
    shipFrom.setName(fromloc);
    adr.setAddressLine(cc);
    adr.setCity(demanddoc.getItemValueString(\"FromTown\")); // город откуда отправляем
    adr.setCountryCode(setdoc.getItemValueString(\"CountryCode\")); // код страны откуда отправляем
    adr.setPostalCode(demanddoc.getItemValueString(\"From_Index\"));
    shipFrom.setAddress(adr);

    //--------------------------------------------------------------
    // код типа сервиса
    // System.out.println (\"код типа сервиса\");
    service.setCode(setdoc.getItemValueString(\"ServiceCode\"));

    //данные об отправляемом объекте
    // System.out.println (\"данные об отправляемом объекте\");
    CodeDescriptionType packagingType = new CodeDescriptionType();
    // System.out.println(\"Corresp_Type = \"+demanddoc.getItemValueString(\"Corresp_Type\"));
    // if (demanddoc.getItemValueString(\"Corresp_Type\") == \"01\") {
    // packagingType.setCode(\"01\"); // письмо
    if ( demanddoc.getItemValueString(\"Corresp_Type\") == \"02\"){
    // packagingType.setCode(\"02\"); // коробка
    com.ups.www.XMLSchema.XOLTWS.Rate.v1_1.DimensionsType dimensions = new com.ups.www.XMLSchema.XOLTWS.Rate.v1_1.DimensionsType();
    dimensions.setHeight(demanddoc.getItemValueString(\"Height\"));
    dimensions.setLength(demanddoc.getItemValueString(\"Length\"));
    dimensions.setWidth(demanddoc.getItemValueString(\"Width\"));
    CodeDescriptionType cdtype = new CodeDescriptionType();

    cdtype.setCode(setdoc.getItemValueString(\"unitOfMeasurementCode\"));
    dimensions.setUnitOfMeasurement(cdtype);

    // вес коробки
    PackageWeightType PackageWeight = new PackageWeightType();
    cdtype.setCode(setdoc.getItemValueString(\"unitOfWeightCode\"));
    PackageWeight.setUnitOfMeasurement(cdtype); // размерность веса
    PackageWeight.setWeight(demanddoc.getItemValueString(\"Weight\"));

    _package.setPackageWeight(PackageWeight);
    _package.setDimensions(dimensions);
    }else{
    DimensionsType dimensions = new DimensionsType();
    dimensions.setHeight(\"0\");
    dimensions.setLength(\"0\");
    dimensions.setWidth(\"0\");
    CodeDescriptionType cdtype = new CodeDescriptionType();

    cdtype.setCode(setdoc.getItemValueString(\"unitOfMeasurementCode\"));
    dimensions.setUnitOfMeasurement(cdtype);

    // вес коробки
    PackageWeightType PackageWeight = new PackageWeightType();
    cdtype.setCode(setdoc.getItemValueString(\"unitOfWeightCode\"));
    PackageWeight.setUnitOfMeasurement(cdtype); // размерность веса
    PackageWeight.setWeight(\"0\");

    _package.setPackageWeight(PackageWeight);
    _package.setDimensions(dimensions);

    };
    packagingType.setCode(demanddoc.getItemValueString(\"Corresp_Type\"));
    _package.setPackagingType(packagingType);
    PackageType ptype[] = {_package};


    // System.out.println (\"запись параметров\");
    if (shipment1 == null) {
    System.out.println(\"shipment is null\");
    return null;
    };

    shipment1.setService(service);
    System.out.println(\"service\");
    shipment1.setShipper(shipper);
    System.out.println(\"shipper\");
    shipment1.setShipFrom(shipFrom);
    System.out.println(\"shipFrom\");
    shipment1.setShipTo(shipTo);
    System.out.println(\"shipTo\");
    shipment1.set_package(ptype);

    System.out.println(\"set_package\");
    // System.out.println (\"generateshipmentparameters end\");


    return shipment1;

    }catch(Exception err){
    System.out.println(\"Error in function \'generateshipmentparameters\': \"+err.toString());
    return null;
    }

    }
    }[/CODE]
    <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">Добавлено:</div></div><div class="sp-body"><div class="sp-content"><!--shcode--><pre><code class='java'>import com.ups.www.XMLSchema.XOLTWS.Rate.v1_1.*;
    import com.ups.www.XMLSchema.XOLTWS.Common.v1_0.*;
    import com.ups.www.XMLSchema.XOLTWS.Rate.v1_1.CodeDescriptionType;
    import com.ups.www.WSDL.XOLTWS.Rate.v1_1.RateServiceLocator;
    import com.ups.www.XMLSchema.XOLTWS.UPSS.v1_0.*;

    import lotus.domino.*;

    public class JavaAgent extends AgentBase {

    Session session;
    Database db;
    String wssearchkey;
    ShipmentType shipment;
    _RateRequest raterequest;
    _RateResponse rateresponse;
    RequestType requestType;

    public void NotesMain() {

    try {
    Document setdoc;
    session = getSession();
    db = session.getCurrentDatabase();
    wssearchkey =\"UPSWebServiceSetting\".toLowerCase();
    AgentContext agentContext = session.getAgentContext();
    // (Your code goes here)
    Document demand = db.getDocumentByID(agentContext.getCurrentAgent().getParameterDocID());

    if (demand == null) {
    System.out.println(\"Не найден документ\");
    return;
    };
    // System.out.println(\"Нашли документ для обработки\");
    setdoc = this.getsettingdoc();
    if (setdoc == null) return;
    //******************************************************
    // System.out.println(\"записываем параметры безопасности\");
    _UPSSecurity upssec = new _UPSSecurity();
    upssec = this.getupssecurityparams(setdoc);
    if (upssec == null) return;
    //******************************************************
    //System.out.println(\"генерируем запрос\");
    raterequest = this.generaterequest(demand, setdoc);
    if (raterequest == null) {
    System.out.println(\"raterequest == null\");
    return;
    };
    //System.out.println(raterequest.getRequest().getRequestOption(0).toString());

    // System.out.println(\"запуск самого сервиса\");
    // запуск самого сервиса

    System.out.println(\"getShipTo CountryCode: \"+raterequest.getShipment().getShipTo().getAddress().getCountryCode());
    System.out.println(\"getShipTo getPostalCode: \"+raterequest.getShipment().getShipTo().getAddress().getPostalCode());
    System.out.println(\"getShipTo getAddressLine: \"+raterequest.getShipment().getShipTo().getAddress().getAddressLine(0));

    System.out.println(\"Shipper CountryCode: \"+raterequest.getShipment().getShipper().getAddress().getCountryCode());
    System.out.println(\"Shipper getPostalCode: \"+raterequest.getShipment().getShipper().getAddress().getPostalCode());
    System.out.println(\"Shipper getAddressLine: \"+raterequest.getShipment().getShipper().getAddress().getAddressLine(0));

    System.out.println(\"getLength\"+raterequest.getShipment().get_package(0).getDimensions().getLength());

    RateServiceLocator rr = new RateServiceLocator();
    //com.ups.www.WSDL.XOLTWS.Rate.v1_1.RatePortType stub = rr.getRatePort();
    // URL portaddr = new URL (\"https://wwwcie.ups.com/webservices/Rate\");
    rr.getRatePort().setCredentials(setdoc.getItemValueString(\"USERNAME\"), setdoc.getItemValueString(\"USERPASSWORD\"));


    if (upssec == null) {
    System.out.println(\"upssec is nothing\");
    return;
    };

    // данные о параметрах безопасности
    System.out.println(\"getAccessLicenseNumber \"+upssec.getServiceAccessToken().getAccessLicenseNumber());
    System.out.println(\"getUsernameToken UserName \"+upssec.getUsernameToken().getUsername());
    System.out.println(\"getUsernameToken Password \"+upssec.getUsernameToken().getPassword());
    if (raterequest == null) {
    System.out.println(\"raterequest== null\");
    return;
    };

    rateresponse = rr.getRatePort().processRate(raterequest, upssec);

    System.out.println(\"Статус\"+ rateresponse.getResponse().getResponseStatus().toString());
    } catch (Exception e) {
    System.out.println(\"Error in AgentBase: \");
    e.printStackTrace();
    }
    }

    ;


    //====================================================
    private Document getsettingdoc() {
    try {
    // System.out.println(\"получение setview\");
    View setview = db.getView(\"(WSSETView)\");
    if (setview == null) {
    System.out.println(\"setview is null\");
    return null;
    };
    // System.out.println(\"wssearchkey = \"+wssearchkey);
    Document setdoc = setview.getDocumentByKey(wssearchkey, true);

    if (setdoc == null) return null;

    return setdoc;

    } catch (NotesException err) {
    System.out.println(\"Error in function \'getsettingdoc\': \"+err.toString());
    return null;
    }
    }

    //====================================================
    private _UPSSecurity getupssecurityparams(Document setdoc) {
    try {
    _UPSSecurity usec = new _UPSSecurity();

    _UPSSecurity_UsernameToken upsusnametoken = new _UPSSecurity_UsernameToken();
    _UPSSecurity_ServiceAccessToken upsservaccesstoken = new _UPSSecurity_ServiceAccessToken();
    // прописываем логин и пароль
    upsusnametoken.setUsername(setdoc.getItemValueString(\"USERNAME\"));
    upsusnametoken.setPassword(setdoc.getItemValueString(\"USERPASSWORD\"));

    // ключ договора
    upsservaccesstoken.setAccessLicenseNumber(setdoc.getItemValueString(\"AccessLicenseNumber\"));

    usec.setServiceAccessToken(upsservaccesstoken);
    usec.setUsernameToken(upsusnametoken);

    return usec;

    } catch (NotesException err) {
    System.out.println(\"Error in function \'getupssecurityparams\': \"+err.toString());
    return null;
    }

    }

    //====================================================
    private _RateRequest generaterequest(Document demanddoc, Document setdoc) {
    try {
    System.out.println(\"generaterequest start\");
    _RateRequest grequest = new _RateRequest();
    System.out.println(\"grequest\");
    requestType = new RequestType();
    // System.out.println(\"RequestType setdoc\"+setdoc.getItemValueString(\"REQUESTOPTION\"));

    String str[] = {\"Rate\",\"\"};
    requestType.setRequestOption(str);
    // System.out.println(grequest.getRequest().getRequestOption(0).toString());
    // формирование параметров для отправки
    shipment = this.generateshipmentparameters(demanddoc, setdoc);
    if (shipment == null) return null;
    grequest.setShipment(shipment);
    // System.out.println(\"grequest getShipperNumber\"+grequest.getShipment().getShipper().getShipperNumber().toLowerCase());
    // System.out.println(grequest.getShipment().getService().getCode());
    return grequest;
    }catch(Exception e){
    System.out.println(\"Error in \'generaterequest\': \"+e.toString());
    return null;
    }

    };
    //====================================================

    private ShipmentType generateshipmentparameters(Document demanddoc, Document setdoc) {
    try {
    // System.out.println (\"generateshipmentparameters start\");

    ShipmentType shipment1 = new ShipmentType();
    ; // парметры отгрузки
    ShipperType shipper = new ShipperType();
    ShipToType shipTo = new ShipToType();
    ShipFromType shipFrom = new ShipFromType();
    CodeDescriptionType service = new CodeDescriptionType();
    PackageType _package = new PackageType();


    AddressType adr = new AddressType();
    ShipToAddressType shiptoaddress = new ShipToAddressType();
    // данные об отправителе
    // System.out.println (\"данные об отправителе\");
    String fromloc = demanddoc.getItemValueString(\"FromLocation\");
    shipper.setName(fromloc);
    // System.out.println (\"Проставили наименование отправителя\");
    shipper.setShipperNumber(demanddoc.getItemValueString(\"ShipperNumber\"));
    // System.out.println (\"Проставили ShipperNumber\");
    String cc[]={
    demanddoc.getItemValueString(\"From_Address\"),\"\"};
    adr.setAddressLine(cc);
    adr.setCity(demanddoc.getItemValueString(\"FromTown\")); // город откуда отправляем
    // System.out.println (\"город откуда\");
    adr.setCountryCode(setdoc.getItemValueString(\"CountryCode\")); // код страны откуда отправляем
    // System.out.println (\"код страны откуда отправляем\");
    adr.setPostalCode(demanddoc.getItemValueString(\"FromZip\"));
    // System.out.println (\"индекс города откуда отправляем\");
    shipper.setAddress(adr);
    // System.out.println (\"Проставили Адресные данные\");
    //-------------------------------------------//
    // данные о получателе
    // System.out.println (\"данные о получателе\");
    String tolocation = demanddoc.getItemValueString(\"ToLocation\");
    shipTo.setName(tolocation);
    String cc1[] = {demanddoc.getItemValueString(\"To_Address\"),\"\"};
    shiptoaddress.setAddressLine(cc1);
    shiptoaddress.setCity(demanddoc.getItemValueString(\"ToTown\")); // город куда отправляем
    shiptoaddress.setCountryCode(setdoc.getItemValueString(\"CountryCode\")); // код страны откуда отправляем
    shiptoaddress.setPostalCode(demanddoc.getItemValueString(\"To_Index\"));

    shipTo.setAddress(shiptoaddress);
    //-------------------------------------------//
    // данные об отправителе
    System.out.println(\"данные от кого\");
    shipFrom.setName(fromloc);
    adr.setAddressLine(cc);
    adr.setCity(demanddoc.getItemValueString(\"FromTown\")); // город откуда отправляем
    adr.setCountryCode(setdoc.getItemValueString(\"CountryCode\")); // код страны откуда отправляем
    adr.setPostalCode(demanddoc.getItemValueString(\"From_Index\"));
    shipFrom.setAddress(adr);

    //--------------------------------------------------------------
    // код типа сервиса
    // System.out.println (\"код типа сервиса\");
    service.setCode(setdoc.getItemValueString(\"ServiceCode\"));

    //данные об отправляемом объекте
    // System.out.println (\"данные об отправляемом объекте\");
    CodeDescriptionType packagingType = new CodeDescriptionType();
    // System.out.println(\"Corresp_Type = \"+demanddoc.getItemValueString(\"Corresp_Type\"));
    // if (demanddoc.getItemValueString(\"Corresp_Type\") == \"01\") {
    // packagingType.setCode(\"01\"); // письмо
    if ( demanddoc.getItemValueString(\"Corresp_Type\") == \"02\"){
    // packagingType.setCode(\"02\"); // коробка
    com.ups.www.XMLSchema.XOLTWS.Rate.v1_1.DimensionsType dimensions = new com.ups.www.XMLSchema.XOLTWS.Rate.v1_1.DimensionsType();
    dimensions.setHeight(demanddoc.getItemValueString(\"Height\"));
    dimensions.setLength(demanddoc.getItemValueString(\"Length\"));
    dimensions.setWidth(demanddoc.getItemValueString(\"Width\"));
    CodeDescriptionType cdtype = new CodeDescriptionType();

    cdtype.setCode(setdoc.getItemValueString(\"unitOfMeasurementCode\"));
    dimensions.setUnitOfMeasurement(cdtype);

    // вес коробки
    PackageWeightType PackageWeight = new PackageWeightType();
    cdtype.setCode(setdoc.getItemValueString(\"unitOfWeightCode\"));
    PackageWeight.setUnitOfMeasurement(cdtype); // размерность веса
    PackageWeight.setWeight(demanddoc.getItemValueString(\"Weight\"));

    _package.setPackageWeight(PackageWeight);
    _package.setDimensions(dimensions);
    }else{
    DimensionsType dimensions = new DimensionsType();
    dimensions.setHeight(\"0\");
    dimensions.setLength(\"0\");
    dimensions.setWidth(\"0\");
    CodeDescriptionType cdtype = new CodeDescriptionType();

    cdtype.setCode(setdoc.getItemValueString(\"unitOfMeasurementCode\"));
    dimensions.setUnitOfMeasurement(cdtype);

    // вес коробки
    PackageWeightType PackageWeight = new PackageWeightType();
    cdtype.setCode(setdoc.getItemValueString(\"unitOfWeightCode\"));
    PackageWeight.setUnitOfMeasurement(cdtype); // размерность веса
    PackageWeight.setWeight(\"0\");

    _package.setPackageWeight(PackageWeight);
    _package.setDimensions(dimensions);

    };
    packagingType.setCode(demanddoc.getItemValueString(\"Corresp_Type\"));
    _package.setPackagingType(packagingType);
    PackageType ptype[] = {_package};


    // System.out.println (\"запись параметров\");
    if (shipment1 == null) {
    System.out.println(\"shipment is null\");
    return null;
    };

    shipment1.setService(service);
    System.out.println(\"service\");
    shipment1.setShipper(shipper);
    System.out.println(\"shipper\");
    shipment1.setShipFrom(shipFrom);
    System.out.println(\"shipFrom\");
    shipment1.setShipTo(shipTo);
    System.out.println(\"shipTo\");
    shipment1.set_package(ptype);

    System.out.println(\"set_package\");
    // System.out.println (\"generateshipmentparameters end\");


    return shipment1;

    }catch(Exception err){
    System.out.println(\"Error in function \'generateshipmentparameters\': \"+err.toString());
    return null;
    }

    }
    }[/CODE]
     
  13. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    RenatAhmetshin вы злонамеренно не хотите использовать оформление кода?! :angry2:

    Добавлено: я вот даже читать не буду, да и другим не рекомендую, если не будете уважать наши глаза и восприятие

    Добавлено: а потом и вовсе - топик закрою для ответов, до исправления
     
  14. RenatAhmetshin

    Регистрация:
    31 июл 2014
    Сообщения:
    12
    Симпатии:
    0
    Извините пожалуйста, не хотел никого обидеть.

    import com.ups.www.XMLSchema.XOLTWS.Rate.v1_1.*;
    import com.ups.www.XMLSchema.XOLTWS.Common.v1_0.*;
    import com.ups.www.XMLSchema.XOLTWS.Rate.v1_1.CodeDescriptionType;
    import com.ups.www.WSDL.XOLTWS.Rate.v1_1.RateServiceLocator;
    import com.ups.www.XMLSchema.XOLTWS.UPSS.v1_0.*;

    import lotus.domino.*;

    public class JavaAgent extends AgentBase {

    Session session;
    Database db;
    String wssearchkey;
    ShipmentType shipment;
    _RateRequest raterequest;
    _RateResponse rateresponse;
    RequestType requestType;
    public void NotesMain() {

    try {
    Document setdoc;
    session = getSession();
    db = session.getCurrentDatabase();
    wssearchkey = "upswebservicesetting";
    AgentContext agentContext = session.getAgentContext();
    // (Your code goes here)
    Document demand = db.getDocumentByID(agentContext.getCurrentAgent().getParameterDocID());

    if (demand== null) {
    System.out.println("Не найден документ");
    return;
    };
    // System.out.println("Нашли документ для обработки");
    setdoc = this.getsettingdoc();
    if (setdoc == null) return;
    //******************************************************
    // System.out.println("записываем параметры безопасности");
    _UPSSecurity upssec = new _UPSSecurity ();
    upssec = this.getupssecurityparams(setdoc);
    if (upssec== null) return;
    //******************************************************
    //System.out.println("генерируем запрос");
    raterequest = this.generaterequest(demand, setdoc);
    if (raterequest == null){
    System.out.println("raterequest == null");
    return;
    };
    //System.out.println(raterequest.getRequest().getRequestOption(0).toString());

    // System.out.println("запуск самого сервиса");
    // запуск самого сервиса

    System.out.println("getShipTo CountryCode: "+raterequest.getShipment().getShipTo().getAddress().getCountryCode());
    System.out.println("getShipTo getPostalCode: "+raterequest.getShipment().getShipTo().getAddress().getPostalCode());
    System.out.println("getShipTo getAddressLine: "+raterequest.getShipment().getShipTo().getAddress().getAddressLine(0));

    System.out.println("Shipper CountryCode: "+raterequest.getShipment().getShipper().getAddress().getCountryCode());
    System.out.println("Shipper getPostalCode: "+raterequest.getShipment().getShipper().getAddress().getPostalCode());
    System.out.println("Shipper getAddressLine: "+raterequest.getShipment().getShipper().getAddress().getAddressLine(0));

    System.out.println("getLength"+raterequest.getShipment().get_package(0).getDimensions().getLength());

    RateServiceLocator rr = new RateServiceLocator ();
    //com.ups.www.WSDL.XOLTWS.Rate.v1_1.RatePortType stub = rr.getRatePort();
    // URL portaddr = new URL ("https://wwwcie.ups.com/webservices/Rate");
    rr.getRatePort().setCredentials(setdoc.getItemValueString("USERNAME"), setdoc.getItemValueString("USERPASSWORD"));


    if (upssec == null) {
    System.out.println("upssec is nothing");
    return;
    };

    // данные о параметрах безопасности
    System.out.println("getAccessLicenseNumber "+upssec.getServiceAccessToken().getAccessLicenseNumber());
    System.out.println("getUsernameToken UserName "+upssec.getUsernameToken().getUsername());
    System.out.println("getUsernameToken Password "+upssec.getUsernameToken().getPassword());
    if (raterequest== null) {
    System.out.println("raterequest== null");
    return;
    };

    rateresponse = rr.getRatePort().processRate(raterequest, upssec);

    System.out.println ("Статус"+ rateresponse.getResponse().getResponseStatus().toString());
    } catch(Exception e) {
    System.out.println("Error in AgentBase: ");
    e.printStackTrace();
    }
    };


    //====================================================
    private Document getsettingdoc () {
    try {
    // System.out.println("получение setview");
    View setview = db.getView("(WSSETView)");
    if (setview==null) {
    System.out.println("setview is null");
    return null;
    };
    // System.out.println("wssearchkey = "+wssearchkey);
    Document setdoc = setview.getDocumentByKey(wssearchkey, true);

    if (setdoc == null) return null;

    return setdoc;

    } catch (NotesException err) {
    System.out.println("Error in function 'getsettingdoc': "+err.toString());
    return null;
    }
    }
    //====================================================
    private _UPSSecurity getupssecurityparams (Document setdoc){
    try {
    _UPSSecurity usec = new _UPSSecurity ();

    _UPSSecurity_UsernameToken upsusnametoken = new _UPSSecurity_UsernameToken ();
    _UPSSecurity_ServiceAccessToken upsservaccesstoken = new _UPSSecurity_ServiceAccessToken ();
    // прописываем логин и пароль
    upsusnametoken.setUsername(setdoc.getItemValueString("USERNAME"));
    upsusnametoken.setPassword(setdoc.getItemValueString("USERPASSWORD"));

    // ключ договора
    upsservaccesstoken.setAccessLicenseNumber(setdoc.getItemValueString("AccessLicenseNumber"));

    usec.setServiceAccessToken(upsservaccesstoken);
    usec.setUsernameToken(upsusnametoken);

    return usec;

    } catch (NotesException err) {
    System.out.println("Error in function 'getupssecurityparams': "+err.toString());
    return null;
    }

    }
    //====================================================
    private _RateRequest generaterequest(Document demanddoc , Document setdoc) {
    try {
    System.out.println("generaterequest start");
    _RateRequest grequest = new _RateRequest ();
    System.out.println("grequest");
    requestType = new RequestType ();
    // System.out.println("RequestType setdoc"+setdoc.getItemValueString("REQUESTOPTION"));

    String str [] = {"Rate",""};
    requestType.setRequestOption(str);
    // System.out.println(grequest.getRequest().getRequestOption(0).toString());
    // формирование параметров для отправки
    shipment = this.generateshipmentparameters(demanddoc, setdoc);
    if (shipment == null) return null;
    grequest.setShipment(shipment);
    // System.out.println("grequest getShipperNumber"+grequest.getShipment().getShipper().getShipperNumber().toLowerCase());
    // System.out.println(grequest.getShipment().getService().getCode());
    return grequest;
    } catch (Exception e) {
    System.out.println("Error in 'generaterequest': "+e.toString());
    return null;
    }

    };
    //====================================================
    private ShipmentType generateshipmentparameters (Document demanddoc , Document setdoc) {
    try {
    // System.out.println ("generateshipmentparameters start");

    ShipmentType shipment1 = new ShipmentType ();; // парметры отгрузки
    ShipperType shipper = new ShipperType ();
    ShipToType shipTo = new ShipToType ();
    ShipFromType shipFrom = new ShipFromType ();
    CodeDescriptionType service = new CodeDescriptionType ();
    PackageType _package = new PackageType ();


    AddressType adr = new AddressType ();
    ShipToAddressType shiptoaddress = new ShipToAddressType ();
    // данные об отправителе
    // System.out.println ("данные об отправителе");
    String fromloc = demanddoc.getItemValueString("FromLocation");
    shipper.setName(fromloc);
    // System.out.println ("Проставили наименование отправителя");
    shipper.setShipperNumber(demanddoc.getItemValueString("ShipperNumber"));
    // System.out.println ("Проставили ShipperNumber");
    String cc [] = {demanddoc.getItemValueString("From_Address"),""};
    adr.setAddressLine(cc);
    adr.setCity(demanddoc.getItemValueString("FromTown")); // город откуда отправляем
    // System.out.println ("город откуда");
    adr.setCountryCode(setdoc.getItemValueString("CountryCode")); // код страны откуда отправляем
    // System.out.println ("код страны откуда отправляем");
    adr.setPostalCode(demanddoc.getItemValueString("FromZip"));
    // System.out.println ("индекс города откуда отправляем");
    shipper.setAddress(adr);
    // System.out.println ("Проставили Адресные данные");
    //-------------------------------------------//
    // данные о получателе
    // System.out.println ("данные о получателе");
    String tolocation = demanddoc.getItemValueString("ToLocation");
    shipTo.setName(tolocation);
    String cc1 [] = {demanddoc.getItemValueString("To_Address"),""};
    shiptoaddress.setAddressLine(cc1);
    shiptoaddress.setCity(demanddoc.getItemValueString("ToTown")); // город куда отправляем
    shiptoaddress.setCountryCode(setdoc.getItemValueString("CountryCode")); // код страны откуда отправляем
    shiptoaddress.setPostalCode(demanddoc.getItemValueString("To_Index"));

    shipTo.setAddress(shiptoaddress);
    //-------------------------------------------//
    // данные об отправителе
    System.out.println ("данные от кого");
    shipFrom.setName(fromloc);
    adr.setAddressLine(cc);
    adr.setCity(demanddoc.getItemValueString("FromTown")); // город откуда отправляем
    adr.setCountryCode(setdoc.getItemValueString("CountryCode")); // код страны откуда отправляем
    adr.setPostalCode(demanddoc.getItemValueString("From_Index"));
    shipFrom.setAddress(adr);

    //--------------------------------------------------------------
    // код типа сервиса
    // System.out.println ("код типа сервиса");
    service.setCode(setdoc.getItemValueString("ServiceCode"));

    //данные об отправляемом объекте
    // System.out.println ("данные об отправляемом объекте");
    CodeDescriptionType packagingType = new CodeDescriptionType ();
    // System.out.println("Corresp_Type = "+demanddoc.getItemValueString("Corresp_Type"));
    // if (demanddoc.getItemValueString("Corresp_Type") == "01") {
    // packagingType.setCode("01"); // письмо
    if (demanddoc.getItemValueString("Corresp_Type") == "02"){
    // packagingType.setCode("02"); // коробка
    com.ups.www.XMLSchema.XOLTWS.Rate.v1_1.DimensionsType dimensions = new com.ups.www.XMLSchema.XOLTWS.Rate.v1_1.DimensionsType ();
    dimensions.setHeight(demanddoc.getItemValueString("Height"));
    dimensions.setLength(demanddoc.getItemValueString("Length"));
    dimensions.setWidth(demanddoc.getItemValueString("Width"));
    CodeDescriptionType cdtype = new CodeDescriptionType ();

    cdtype.setCode(setdoc.getItemValueString("unitOfMeasurementCode"));
    dimensions.setUnitOfMeasurement(cdtype);

    // вес коробки
    PackageWeightType PackageWeight = new PackageWeightType();
    cdtype.setCode(setdoc.getItemValueString("unitOfWeightCode"));
    PackageWeight.setUnitOfMeasurement(cdtype); // размерность веса
    PackageWeight.setWeight(demanddoc.getItemValueString("Weight"));

    _package.setPackageWeight(PackageWeight);
    _package.setDimensions(dimensions);
    } else {
    DimensionsType dimensions = new DimensionsType ();
    dimensions.setHeight("0");
    dimensions.setLength("0");
    dimensions.setWidth("0");
    CodeDescriptionType cdtype = new CodeDescriptionType ();

    cdtype.setCode(setdoc.getItemValueString("unitOfMeasurementCode"));
    dimensions.setUnitOfMeasurement(cdtype);

    // вес коробки
    PackageWeightType PackageWeight = new PackageWeightType();
    cdtype.setCode(setdoc.getItemValueString("unitOfWeightCode"));
    PackageWeight.setUnitOfMeasurement(cdtype); // размерность веса
    PackageWeight.setWeight("0");

    _package.setPackageWeight(PackageWeight);
    _package.setDimensions(dimensions);

    };
    packagingType.setCode(demanddoc.getItemValueString("Corresp_Type"));
    _package.setPackagingType(packagingType);
    PackageType ptype [] = {_package};


    // System.out.println ("запись параметров");
    if (shipment1 == null) {
    System.out.println ("shipment is null");
    return null;
    };

    shipment1.setService(service);
    System.out.println ("service");
    shipment1.setShipper(shipper);
    System.out.println ("shipper");
    shipment1.setShipFrom(shipFrom);
    System.out.println ("shipFrom");
    shipment1.setShipTo(shipTo);
    System.out.println ("shipTo");
    shipment1.set_package(ptype);

    System.out.println ("set_package");
    // System.out.println ("generateshipmentparameters end");


    return shipment1;

    } catch (Exception err) {
    System.out.println("Error in function 'generateshipmentparameters': "+err.toString());
    return null;
    }

    }
    }
     
  15. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    установите себе "нормальную" IDE, в современной нотусне - эклипс входит в состав
    лучше поставьте отдельно эклипс и в нем отлаживайте код, кот. без нотус специфики (можно и нотусёвые запускать, но там особенности)
    применяйте форматирование кода (в эклипсе, да и в современном ДД, оно есть)
    теги находятся:
    code.png
    spoiler.png

    Добавлено: тег code м.б. вложенным в spoiler
     
  16. RenatAhmetshin

    Регистрация:
    31 июл 2014
    Сообщения:
    12
    Симпатии:
    0
    Всем добрый день. Переписал вызов сервиса на java , перенёс на сервер, чуть пошаманил с java.security и вуаля, всё работает)))

    Добавлено: Всем добрый день. Переписал вызов сервиса на java , перенёс на сервер, чуть пошаманил с java.security и вуаля, всё работает)))
     
Загрузка...

Поделиться этой страницей