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

  • Автор темы RenatAhmetshin
  • Дата начала
R

RenatAhmetshin

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

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

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

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

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

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

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

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 981
611
BIT
437
resparams.Setcredentials что это такое? выб рассказали откудова код
 
R

RenatAhmetshin

Resparams - объект класса PorttypeBase , в котором находится вызываемый метод ProcessRate.


Код:
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
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 981
611
BIT
437
из вас по крупицам надо инфу тянуть :eek:fftop:? неужели не очевидно - интересует источник
кто является клиентом вебсервиса? я так кода и не увидел
 

garrick

Lotus Team
26.10.2009
1 367
152
BIT
341
Setcredentials точно там где надо вставляете?
см.
 
R

RenatAhmetshin

Setcredentials точно там где надо вставляете?
см.

Такую методику делали уже 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">
Код:
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
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 981
611
BIT
437
надысь, после обновления ФФ, столкнулся с траблой - меня не пускал наш корпоративный цайт
оказалось - он требовал аутентификацию посекурити ниже, чем ФФ хотел отдавать (пришлось конфиг ФФ править)
а результатом был посыл меня с ноавторайзед
возможно это и не имеет отношения к проблеме

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

RenatAhmetshin

Переписал процедуру на 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;
}

}
}
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 981
611
BIT
437
RenatAhmetshin оформляйте код, для этого есть spoiler и code теги (соответ картинки)!
 

garrick

Lotus Team
26.10.2009
1 367
152
BIT
341
Не по теме. Просто офигеваю от таких штук:

Код:
wssearchkey = "UPSWebServiceSetting".toLowerCase();

Что помешало сразу маленькими буквами написать? Или по принципу "компьютер железный, что ему будет, пусть работает"?

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

RenatAhmetshin

<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]
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 981
611
BIT
437
RenatAhmetshin вы злонамеренно не хотите использовать оформление кода?! :angry2:

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

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

RenatAhmetshin

Извините пожалуйста, не хотел никого обидеть.

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;
}

}
}
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 981
611
BIT
437
установите себе "нормальную" IDE, в современной нотусне - эклипс входит в состав
лучше поставьте отдельно эклипс и в нем отлаживайте код, кот. без нотус специфики (можно и нотусёвые запускать, но там особенности)
применяйте форматирование кода (в эклипсе, да и в современном ДД, оно есть)
теги находятся:
code.png
spoiler.png

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

RenatAhmetshin

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

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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!