我知道要使用 <?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Header>
<UPSSecurity xmlns="http://www.ups.com/XMLSchema/XOLTWS/UPSS/v1.0">
<UsernameToken>
<Username>xxxxxxxxx</Username>
<Password>xxxxxxxxx</Password>
</UsernameToken>
<ServiceAccessToken>
<AccessLicenseNumber>xxxxxxxxx</AccessLicenseNumber>
</ServiceAccessToken>
</UPSSecurity>
</soap:Header>
<soap:Body>
<RateRequest xmlns="http://www.ups.com/XMLSchema/XOLTWS/Rate/v1.1">
<Request xmlns="http://www.ups.com/XMLSchema/XOLTWS/Common/v1.0">
<RequestOption>rate</RequestOption>
</Request>
<CustomerClassification>
<Code>00</Code>
</CustomerClassification>
<Shipment>
<Shipper>
<ShipperNumber>xxxxxx</ShipperNumber>
<Address>
<StateProvinceCode>WA</StateProvinceCode>
<PostalCode>98134</PostalCode>
<CountryCode>US</CountryCode>
</Address>
</Shipper>
<ShipTo>
<Address>
<StateProvinceCode>CA</StateProvinceCode>
<PostalCode>90210</PostalCode>
<CountryCode>US</CountryCode>
</Address>
</ShipTo>
<ShipFrom>
<Address>
<StateProvinceCode>WA</StateProvinceCode>
<PostalCode>98134</PostalCode>
<CountryCode>US</CountryCode>
</Address>
</ShipFrom>
<Package>
<PackagingType><Code>00</Code></PackagingType>
<Dimensions>
<UnitOfMeasurement><Code>IN</Code></UnitOfMeasurement>
<Length>5</Length>
<Width>5</Width>
<Height>5</Height>
</Dimensions>
<PackageWeight>
<UnitOfMeasurement>
<Code>lbs</Code>
<Description>Pounds</Description>
</UnitOfMeasurement>
<Weight>5</Weight>
</PackageWeight>
</Package>
<ShipmentRatingOptions>
<NegotiatedRatesIndicator>1</NegotiatedRatesIndicator>
</ShipmentRatingOptions>
<ShipmentServiceOptions>
<SaturdayDeliveryIndicator>1</SaturdayDeliveryIndicator>
</ShipmentServiceOptions>
<Service>
<Code>14</Code><!-- code for the UPS Service associated with the shipment. see pg 47 of Rating XML pdf -->
</Service>
</Shipment>
</RateRequest>
</soap:Body>
</soap:Envelope>
,但看起来它会自动执行重试。
我想要的是在用户点击重试按钮时触发重试。我试图存储请求并重用它,但发现Volley实际上在请求完成后会破坏侦听器。
这使我无法在重试后进行任何用户交互。然而,我可以再次重建相同的请求,但它看起来并不正确并且使事情变得更复杂。
有没有办法手动执行重试?还是留住听众?谢谢!
答案 0 :(得分:0)
您所经历的和您得出的结论完全一样。 imho背后的逻辑也很完美。请求是一个拥有国家的生物,它的生命就会消亡。你扔在海里的球。球飞溅然后下沉。你不能真正得到球回来,而是你得到另一个完全相同的球并再次投球。
请求包含的数据很重要,可以重复使用。您可以使用此数据,http方法和uri克隆/重新创建请求。当然,其他描述行为的参数应该以更通用的方式获得。以类似的方式,我在jus中使请求变为clonable,这是一个基于凌空但更多进化的库。