Question

I am trying to change the search site that my eBay Android app searches in. At the moment, it searches the US site, but I would like it to search the UK site.

Here's my findingServiceClient class that I'm trying to make search the UK site, with the country code 3(UK, source).

As far as I can see I have set my code up to search the UK site, but it still seems to search the US.

any help would be appreciated, thanks.

public class FindingServiceClient {


// production
public static String eBayFindingServiceURLString = "http://svcs.ebay.com/services/search/FindingService/v1";
// sandbox
//public static String eBayFindingServiceURLString = "https://svcs.sandbox.ebay.com/services/search/FindingService/v1";
public static String eBayAppId = "ebay_app_id";

private static volatile FindingServicePortType_SOAPClient client = null;


public static String targetSiteid = "3";



public static FindingServicePortType_SOAPClient getSharedClient() {
    if (client == null) {
        synchronized(FindingServiceClient.class) {
            if (client == null) {
                client = new FindingServicePortType_SOAPClient();
                client.setEndpointUrl(eBayFindingServiceURLString);
                client.setSoapVersion(SOAPVersion.SOAP12); // ebay finding service supports SOAP 1.2
                client.setContentType("application/soap+xml");
                client.getAsyncHttpClient().addHeader("X-EBAY-API-SITE-ID", targetSiteid);
                client.getAsyncHttpClient().addHeader("Accept", "application/soap+xml");
                client.getAsyncHttpClient().addHeader("X-EBAY-SOA-SECURITY-APPNAME", eBayAppId);
                client.getAsyncHttpClient().addHeader("X-EBAY-SOA-MESSAGE-PROTOCOL", "SOAP12");
                client.getAsyncHttpClient().addHeader("X-EBAY-SOA-REQUEST-DATA-FORMAT", "SOAP");

            }
        }
    }

    return client;
}

}

Was it helpful?

Solution

The site that is searched is specified in the HTTP header X-EBAY-SOA-GLOBAL-ID. The value of this header is not a unique integer, such as 3, but a unique string, such as EBAY-US. To search the UK site you need to make the two below changes to your code and remove any reference to X-EBAY-API-SITE-ID.

public static String targetSiteid = "EBAY-GB";

client.getAsyncHttpClient().addHeader("X-EBAY-SOA-GLOBAL-ID", targetSiteid);

The eBay docs provide a complete list of HTTP headers and a table of site IDs mapped to global IDs.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top