2013-04-01 209 views
1

我有一段时间试图找出这个雅虎存储API的东西。我在互联网上搜索了一些例子,但几乎没有任何东西。我已经建立了我的请求:Yahoo Store订单API访问

String data = ""; 
data += "<?xml version=\"1.0\" encoding=\"utf-8\" ?>"; 
data += "<ystorewsRequest>"; 
data += "<StoreID>" + storeID + "</StoreID>"; 
data += "<SecurityHeader>"; 
data += "<PartnerStoreContractToken>" + token + "</PartnerStoreContractToken>"; 
data += "</SecurityHeader>"; 
data += "<Version> 1.0 </Version>"; 
data += "<Verb> get </Verb>"; 
data += "<ResourceList>"; 
data += "<OrderListQuery>"; 
data += "<Filter>"; 
data += "<Include> all </Include>"; 
data += "</Filter>"; 
data += "<QueryParams>"; 
data += "<OrderID> 5441 </OrderID>"; 
data += "</QueryParams>"; 
data += "</OrderListQuery>"; 
data += "</ResourceList>"; 
data += "</ystorewsRequest>"; 

,并试图将数据发送到在API文档中列出的网址: https://MyStoreID.order.store.yahooapis.com/V1/order(存储在字符串地址)

url = new URL(address); 

HttpURLConnection conn = (HttpURLConnection)url.openConnection(); 
conn.setDoOutput(true); 
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset=utf-8"); 
conn.setRequestMethod("POST"); 

String urlParameters = "query=" + data; 

DataOutputStream wr = new DataOutputStream (
      conn.getOutputStream()); 
    wr.writeBytes (urlParameters); 
    wr.flush(); 
    wr.close(); 

BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream())); 


line = rd.readLine(); 
rd.close(); 

我得到这个作为结果的错误;

java.io.IOException: Server returned HTTP response code: 400 for URL: https://MyStoreID.order.store.yahooapis.com/V1/order 
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source) 
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(Unknown Source) 

我几乎完全失去了这个,因为雅虎提供了一些糟糕的文档,没有我能找到的例子。有没有人试图使用来自Java的Yahoo API调用来连接到雅虎商店?任何帮助在这一点上表示赞赏。谢谢。

回答

1

我能弄明白这一点。所以我会为其他人发布解决方案。这是一个PHP脚本,它将请求关于订单号5863的所有信息。我可以从Java程序中调用PHP脚本,并根据需要从中解析结果。

<?php 

//build xml request 
$data = "<?xml version='1.0' encoding='utf-8'?>"; 
$data .= "<ystorewsRequest>"; 
$data .= "<StoreID>your store id</StoreID>";  //insert your store id 
$data .= "<SecurityHeader>"; 
$data .= "<PartnerStoreContractToken>your token</PartnerStoreContractToken>"; //insert your token` 
$data .= "</SecurityHeader>"; 
$data .= "<Version>1.0</Version>"; 
$data .= "<Verb>get</Verb>"; 
$data .= "<ResourceList>"; 
$data .= "<OrderListQuery>"; 
$data .= "<Filter>"; 
$data .= "<Include>all</Include>"; 
$data .= "</Filter>"; 
$data .= "<QueryParams>"; 
$data .= "<OrderID>5863</OrderID>"; 
$data .= "</QueryParams>"; 
$data .= "</OrderListQuery>"; 
$data .= "</ResourceList>"; 
$data .= "</ystorewsRequest>"; 

//send request to yahoo order api 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);  
curl_setopt($ch, CURLOPT_URL, "https://your_store_id.order.store.yahooapis.com/V1/order");   //insert your store id 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 
$content=curl_exec($ch); 

//print raw xml data returned from yahoo 
echo htmlentities($content); 
?>