Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >制作AWS产品广告API请求iOS

制作AWS产品广告API请求iOS
EN

Stack Overflow用户
提问于 2014-03-01 16:14:32
回答 2查看 540关注 0票数 2

今天,我无法为aws的产品广告api提出"ItemSearch“请求。

首先,这是在2月24日星期一工作,现在是3月1日,它不起作用。我不知道是否有任何更新可能改变了AWS的工作方式。我搜索的时候什么都找不到。

我的第一个错误是:“请求已过期。时间戳日期为140301235753Z”--这意味着我为请求"140301235753Z“输入的时间超出了AWS为UTC时间存储的时间范围15分钟。我做了一些研究,最后修改了下面的代码。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
NSDateFormatter *UTCFormatter = [[NSDateFormatter alloc] init];
UTCFormatter.dateFormat = @"yyMMddHHmmss'Z'";
UTCFormatter.timeZone = [NSTimeZone timeZoneWithAbbreviation:@"UTC"];

NSString *timeStamp = [UTCFormatter stringFromDate:[NSDate date]];

我把@"yyMMddHHmmss'Z'"改成了@"yyyy-MM-dd'T'HH:mm:ss'Z'"

再次运行请求时,我遇到了以下错误:“我们计算的请求签名与您提供的签名不匹配。请检查AWS秘密访问密钥和签名方法。”这意味着我计算的API调用的签名部分在比较AWS接收到我的请求时计算的签名部分时是错误的。

我使用这个链接Amazon签名示例作为参考来检查下面的代码。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// create HMAC with SHA256
const char *cKey  = [secretKey cStringUsingEncoding:NSUTF8StringEncoding];
const char *cData = [canonicalString cStringUsingEncoding:NSUTF8StringEncoding];
unsigned char cHMAC[CC_SHA256_DIGEST_LENGTH];

CCHmac(kCCHmacAlgSHA256, cKey, strlen(cKey), cData, strlen(cData), cHMAC);

NSData *hashData = [NSData dataWithBytes:cHMAC length:CC_SHA256_DIGEST_LENGTH];
NSString *signature = [[DTBase64Coding stringByEncodingData:hashData] stringByURLEncoding];

我没有看到我的代码有任何错误。我通过google寻找一个应用程序,它可以创建我想要的字符串,以测试我的签名是否正确,但是AWS似乎没有任何东西(我可以找到,我可能只是一个糟糕的谷歌用户)。

我的AWS秘密钥匙里有个"/“字。我想这可能会扰乱计算HMAC的算法。所以我创建了新的密钥,直到amazon给我生成了一个带有奇怪字符的密钥,并对其进行了测试。这不管用..。

最终,我要做的是使用这些信息生成一个AWS产品广告API请求

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
NSString *verb = @"GET";
NSString *hostName = @"webservices.amazon.com";
NSString *path = @"/onca/xml";

NSDictionary *params = @{
                         @"Service": @"AWSECommerceService",
                         @"AWSAccessKeyId": accessKey,
                         @"Operation": @"ItemSearch",
                         @"ResponseGroup": @"Large",
                         @"SearchIndex": @"Books",
                         @"Title": bookTitle,
                         @"AssociateTag" : trackingID
                         };

我用变量替换了敏感/动态信息。

我已经在AWS产品广告文档搜索了文档PDF,似乎无法解决我的问题。

最令人困惑的是,我的代码在6天前就开始工作了,而我什么也没改变。

EN

回答 2

Stack Overflow用户

发布于 2014-03-01 16:29:53

我也有过类似的第三方API体验。很明显,我的请求被重定向了,我不得不辞职。

请确保在此nsurlrequest委托方法中签名您的请求:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
- (NSURLRequest *)connection: (NSURLConnection *)inConnection
             willSendRequest: (NSURLRequest *)inRequest
            redirectResponse: (NSURLResponse *)inRedirectResponse;
票数 0
EN

Stack Overflow用户

发布于 2014-04-09 11:42:21

我犯了一个错误,把编码身体参数的代码注释掉了。在取消注释并设置值之后,所有这些操作都很好。所以一定要对你的参数进行编码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22122206

复制
相关文章
分页Page对象
发表于2016-05-262019-01-01 作者 wind /** * 分页对象,包含页码,每页条数,总条数 User: yangyan Date: 13-11-18 Time: 下午8:59 To change this * template use File | Settings | File Templates. */ public class Page implements Serializable { private static final long serialVer
前Thoughtworks-杨焱
2021/12/07
9640
ThinkPHP page分页类的学习
实例化数据对象 1.$user=M('user'); 查询总记录数 $count = $user->count();//直接读取数据表中条项总数 //或者有查询条件 $count = $user->where(查询条件)->count();//查询满足查询条件的条目数 实例化分页类 1.$Page = new \Think\Page($count, 10); 按照限定的条数,从数据库中读取相应数量的条数 如下,filed()指定从数据库中取出id,title,tit
benny
2018/03/06
1.5K0
ThinkPHP page分页类的学习
Mybatis实现分页-分页类的模板(最基础的模板)
我用的是lombok 你也可以不用去建立Get和Set方法 我的lombok maven坐标如下:
用户9006224
2022/12/21
4960
Gatsby入门指南—添加上一页下一页功能(完结篇)
到此,通过gatsby就快速的搭建了一个博客网站,我们只需书写markdown文件就能生成对应的网页了。至于网页美化,那是切图的事儿,我就不在这里墨迹了。
前端大彬哥
2019/05/29
9230
Gatsby入门指南—添加上一页下一页功能(完结篇)
到此,通过gatsby就快速的搭建了一个博客网站,我们只需书写markdown文件就能生成对应的网页了。至于网页美化,那是切图的事儿,我就不在这里墨迹了。
前端大彬哥
2019/05/29
9330
AJAX 中创建 XMLHttpRequest 对象的方法和常用属性、方法
AJAX(Asynchronous JavaScript and XML)是一种用于在网页上进行异步数据交互的技术。通过 AJAX,我们可以在不重新加载整个网页的情况下,与服务器进行数据交换并更新部分页面内容。在实现 AJAX 的过程中,创建一个 XMLHttpRequest 对象是必不可少的。
网络技术联盟站
2023/07/07
4760
java中page的对象,page对象[通俗易懂]
page对象是JSP九大内置对象之一。JSP全称JavaServerPage,是一种动态网页技术标准,以Java语言作为脚本语言。在JSP中预先定义了九个内置对象,这个九个内置对象不需要声明就可以在脚本代码和表达式中任意使用,九个内置对象分别是:request、response、session、application、out、pageContext、config、page、exception。
全栈程序员站长
2022/09/18
2.4K0
java中page的对象,page对象[通俗易懂]
Spring Boot中读取配置属性的几种方式
  本文介绍Spring Boot中读取配置属性的几种方式,项目示例中用到的application.yml和application.properties定义如下:
happyJared
2018/09/20
8.3K0
Spring Boot中读取配置属性的几种方式
C 和 C++ 中的未定义行为
theme: channing-cyan highlight: a11y-dark
鲸落c
2022/11/14
4.4K0
C#反射读取和设置类的属性
http://www.cnblogs.com/william-lin/archive/2013/06/05/3118233.html
跟着阿笨一起玩NET
2018/09/19
2K0
page指令的用法,重要属性是什么?
i) import="package.class",或者import="package.class1,...,package.classN":
马克java社区
2021/07/12
8010
用 Gatsby 创建一个博客
Gatsby 是一个令人难以置信的静态站点生成器,它允许使用React作为渲染引擎引擎来搭建一个静态站点,它真正具有现代web应用程序所期望的所有优点。它通过在构建时通过服务器端渲染将动态的 react 组件呈现为静态 HTML 内容。这意味着您的用户可以获得静态站点的所有好处,比如不使用JavaScript、搜索引擎友好性、非常快的加载速度等等,也并没有失去现代web所期望的活力和交互性。一旦呈现为静态 HTML,客户端站点的React和JavaScript会接管它并添加动态的内容。 Gatsby 最近发布了v1.0.0,推出了很多新特性。包括(但不限于)使用GraphQL创建内容查询的能力,与各种cms集成——包括WordPress、Contentful、Drupal等等。还有基于路由的代码分布使得用户体验更佳。在这篇文章中,我们将深入探讨 Gatsby 和一些新特性,并创建一个静态博客。让我们开始吧!
疯狂的技术宅
2019/03/27
2.5K0
用 Gatsby 创建一个博客
分享我的CleanArchitecture for Razor Page项目模板
这个项目是参考和整合了jasontaylordev/CleanArchitecture 和 blazorhero/CleanArchitecture 代码基础上,重构出来的新的项目,这两个项目都是非常优秀和人气很旺的关于CleanArchitecture的项目模板,我也fork了他们的项目并添加了一些自己的功能模块,我个人非常喜欢blazorhero/CleanArchitecture这个项目,前端使用的是微软的Blazor(webassembly)技术,对于.net开发人员可以很快开始工作,几乎不需要额外的学习,但在项目的进行中发现了一个致命的问题就是在(WASM模式下)性能不行,加载数据一多就容易的卡顿,但相信后面会得到优化,jasontaylordev/CleanArchitecture 项目的前端用的Angular12 由于我对angular/vue/react的技术不是很熟练,学习起来实在是感觉力不从心,在实际开发过程中遇到了很多坑,都需要用google来解决,所以最后我还是选择了自己最熟悉的开发方式asp.net MVC来对我原来的框架进行重构来实现CleanArchitecture设计模式。
阿新
2021/08/19
8960
分享我的CleanArchitecture for Razor Page项目模板
velocity分页模板
以前用后台java拼接分页代码,不利于修改。找到一份velocity模板。 1 <!-- 分页模板 --> 2 #macro(pager $url $pager) 3 <url class="page"> 4 #set($FRONT_LEN = 3) 5 #set($BEHIND_LEN = 3) 6 #set($PAGER_LEN = 7) 7 #set($last = $!{pager.pageNumber} - 1) 8 #se
Ryan-Miao
2018/03/13
1K0
TypeScript中的可选属性和只读属性
可选属性 接口里的属性不全都是必需的。 有些是只在某些条件下存在,或者根本不存在。 例如给函数传入的参数对象中只有部分属性赋值了。带有可选属性的接口与普通的接口定义差不多,只是在可选属性名字定义的后面
孙亖
2018/06/07
2.9K0
2022 年10个优质的 Node.js CMS 平台分享
内容管理系统 (「CMS」) 使没有强大技术背景的人也能够轻松发布内容。我们可以使用 「CMS」 来管理我们的内容和交付。市面上有不同类型的 「CMS」,它们执行不同的目的并具有不同的功能。
徐小夕
2022/02/09
4.6K0
2022 年10个优质的 Node.js CMS 平台分享
Java-方法重载时 调用未定义的对象属性
public class TestWayReload { int id; String name; String pwd; public TestWayReload(){ System.out.println(“Hellow World!”); System.out.println("################"); }
Fisherman渔夫
2019/07/30
5.5K0
opencv无法读取图片_opencv无法读取图片
使用一下代码读取一张图片失败(不管是绝对路径还是相对路径,都失败),工程运行都没问题,就是图片读取失败。
全栈程序员站长
2022/11/04
2.4K0
Linux系统中的Page cache和Buffer cache
Mem:表示物理内存统计。 total:表示物理内存总量(total = used + free)。 used:表示总计分配给缓存(包含buffers 与cache )使用的数量,但其中可能部分缓存并未实际使用。 free:未被分配的内存。 shared:共享内存。 buffers:系统分配但未被使用的buffers数量。 cached:系统分配但未被使用的cache数量。 -/+ buffers/cache:表示物理内存的缓存统计。 used2:也就是第一行中的used – buffers - cached也是实际使用的内存总量。 // used2为第二行 free2 = buffers1 + cached1 + free1 // free2为第二行,buffers1等为第一行 free2:未被使用的buffers与cache和未被分配的内存之和,这就是系统当前实际可用内存。 Swap:表示硬盘上交换分区的使用情况。
JavaEdge
2021/10/18
1.9K0
点击加载更多

相似问题

“无法读取未定义的属性'node‘”- Gatsby/GraphQL/Prismic

216

TypeError:无法读取Gatsby中未定义的.src/page/index.js的属性“数据”

10

Gatsby: gatsby源-graphql:无法读取未定义的属性“createPageDependency”

10

用Gatsby和模板分页

10

无法读取Gatsby、Contentful和Graphql中未定义图像的属性?

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文