Error occured: java.lang.String cannot be cast to org.apache.http.HttpHost
java.lang.classCastException: java.lang.String cannot be cast to org.apache.http.HttpHost
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:416)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:906)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:805)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:784)
at com.xerox.amazonws.common.AWSQueryConnection.makeRequest(AWSQueryConnection.java:474)
at com.xerox.amazonws.sdb.SimpleDB.makeRequestInt(SimpleDB.java:231)
at com.xerox.amazonws.sdb.SimpleDB.createDomain(SimpleDB.java:155)
at com.amazonsimpledb.SDBexample1.main(SDBexample1.java:19)
我的代码如下(注意我已将AWS访问ID和密钥替换为实际值):
public static void main(String[] args) { String awsAccessId = "My aws access id"; String awsSecretKey = "my aws secret key"; SimpleDB sdb = new SimpleDB(awsAccessId,awsSecretKey,true); try { Domain domain = sdb.createDomain("cars"); System.out.println(domain); } catch (com.xerox.amazonws.sdb.SDBException e) { // Todo Auto-generated catch block e.printstacktrace(); } }
关于为什么会出现上述错误的任何想法.
我感谢任何帮助.
解决方法
>根据记者的说法,一旦我们降级回Apache HttpClient 4.1,事情似乎就会起作用,所以这可能是最终的临时解决方法.
无论哪种方式,我强烈建议切换到官方AWS SDK for Java(或其他语言SDKs),这不仅支持和维护常规方式,而且还密切跟踪所有AWS API更改(诚然,这不是那么关键对于Amazon SimpleDB来说,这基本上是技术明智的冷冻,但是你可以更轻松地使用AWS Products & Services以后的过多时间.
>此外,如果您使用的是IDE,您可以从AWS Toolkit for Eclipse中受益.
SDK包含一些示例(也可通过Eclipse Toolkit向导获得),其中包括SimpleDB – 这里是关于您的示例的精简代码摘录:
BasicAWSCredentials basicAWSCredentials = new BasicAWSCredentials( awsAccessId,awsSecretKey); AmazonSimpleDB sdb = new AmazonSimpleDBClient(basicAWSCredentials); Region usWest2 = Region.getRegion(Regions.US_WEST_2); sdb.setRegion(usWest2); try { // Create a domain String myDomain = "MyStore"; System.out.println("Creating domain called " + myDomain + ".\n"); sdb.createDomain(new CreateDomainRequest(myDomain)); // ... // Delete a domain System.out.println("Deleting " + myDomain + " domain.\n"); sdb.deleteDomain(new DeleteDomainRequest(myDomain)); } catch (AmazonServiceException ase) { // ... } catch (AmazonClientException ace) { // ... }