java - 雅虎商店订单 API 访问

标签 java yahoo yahoo-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 文档中列出的 URL: 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 调用连接到 Yahoo Store?此时如有任何帮助,我们将不胜感激。谢谢。

最佳答案

我能够弄清楚这一点。所以我会将解决方案发布给其他人。这是一个 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);
?>

关于java - 雅虎商店订单 API 访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15753012/

相关文章:

javascript - javascript 中的 WOEID 天气预报(使用 YQL 或 rss)?

java - JTextPane - 不使用 JScrollPane 滚动可见文本

java - 如何使用泛型类型实现接口(interface)?

java - YouTube Java API 问题

python - 如何在 Python 中使用 pandas 重命名 DataFrame 中的列

c# - 401 未经授权使用 Yahoo OAuth

python - 股票数据请求被拒绝后继续查询Yahoo Finance

javascript - 如何从 html 文档中调用 yahoo 天气 api javascript 函数

java - 使用 Log4j 1.x 桥接器时,Log4j RollingFileAppender 有奇怪的行为

javascript - 将 SnapEngage 与 Emberjs 一起使用会导致 JS 错误