- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 XCode 中有以下方法:
- (void)makeRequest:(NSString *)wPin withMethod:(NSString *)HTTPMethod passValue:(NSString *)wVal {
@try {
NSString *params = @"";
NSString *postString;
NSData *postData;
NSString *method;
if ([HTTPMethod isEqualToString:@"GET"]) {
params = [NSString stringWithFormat:@"?pin=%@", wPin];
method = @"Retrieving data from";
} else {
postString = [NSString stringWithFormat:@"pin=%@&val=%@", wPin, wVal];
postData = [postString dataUsingEncoding:NSUTF8StringEncoding];
method = [NSString stringWithFormat:@"Passing '%@' to", postString];
}
NSString *requestURL = [NSString stringWithFormat:@"%@%@", homeURL, params];
NSLog(@"%@ '%@'", method, requestURL);
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:requestURL] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:0];
NSString *postLength = [[NSString alloc] initWithFormat:@"%lu", (unsigned long)[postData length]];
[request setHTTPMethod:HTTPMethod];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:postData];
NSString *postBody = [[NSString alloc] initWithBytes: [request.HTTPBody bytes] length: [request.HTTPBody length] encoding:NSUTF8StringEncoding];
NSLog(@"%@", postBody);
NSURLConnection *conn = [[NSURLConnection alloc] initWithRequest:request delegate: self];
if (conn) { //Makes connection
}
}
@catch (NSException *e) {
NSLog(@"Exception %@", e);
}
}
当我使用以下方法调用此方法时:
[self makeRequest:wPin withMethod:@"GET" passValue:@""];
我的服务器记录了一个健康的 GET 请求,并向我发回正确的数据,然后我对其进行了解析……它有效,没问题。
但是,当我使用以下方法调用此方法时:
[self makeRequest:wPin withMethod:@"POST" passValue:wState];
我的服务器仍然将请求方法记录为“GET”。我什至尝试过直接设置 HTTPMethod:
[request setHTTPMethod:@"POST"];
我的服务器仍然记录“GET”请求。
仅供引用:我用 JavaScript 开发了相同的应用程序,一切正常(服务器正确处理 GET 和 POST)。
这是我的应用控制台输出:
(加载中)
2015-01-28 10:25:08.324 Switch[2977:132599] Retrieving data from '<my server>?pin=18'
2015-01-28 10:25:08.330 Switch[2977:132599] Retrieving data from '<my server>?pin=23'
2015-01-28 10:25:08.611 Switch[2977:132599] 18OFF
2015-01-28 10:25:08.626 Switch[2977:132599] 23ON
(当我发送三个 POST 请求时)
2015-01-28 10:25:28.842 Switch[2977:132599] Passing 'pin=18&val=1' to '<my server>'
2015-01-28 10:25:28.843 Switch[2977:132599] pin=18&val=1
2015-01-28 10:28:12.189 Switch[2977:132599] Passing 'pin=18&val=0' to '<my server>'
2015-01-28 10:28:12.190 Switch[2977:132599] pin=18&val=0
2015-01-28 10:28:13.702 Switch[2977:132599] Passing 'pin=23&val=0' to '<my server>'
2015-01-28 10:28:13.703 Switch[2977:132599] pin=23&val=0
此外,当您在输出中看到类似“pin=18&val=1”的内容时,请注意,这只是 postBody 发送前的一个 NSLog。这不是服务器响应,与您在输出中看到的“18OFF”不同。
最佳答案
尝试改变编码方案,
[postString dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
关于ios - NSMutableURLRequest 不改变 HTTPMethod,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28197480/
在 Udacity Developing Scalable Apps with Java course ,后端应用程序的一些 API 方法(概念上应该是 HttpMethod.GET )是使用 Htt
这不会编译。为什么?错误消息令人困惑,为什么模式中不存在该属性? match System.Net.Http.HttpMethod.Post with | System.Net.Http.HttpMe
我将 HttpClient 3..0.1 与 MultiThreadedHttpConnectionManager 结合使用,并使用以下代码来获取页面并获取该页面的最终重定向 URL。 多个线程并行访
我有一个 API 请求,它应该 POST 一些 json: class func makeAPICall (serializedJSONObject contentMap: Dictionary, c
我在 XCode 中有以下方法: - (void)makeRequest:(NSString *)wPin withMethod:(NSString *)HTTPMethod passValue:(N
我试图将 http 方法设置为 POST,但 Xcode 说它是一个只获取属性。 我是这样做的: request.HTTPMethod = "POST" Apple 文档说我必须这样声明 httpM
我正在使用 HttpClient,我需要为 HttpMethod 设置一个非标准类型。在使用 HttpWebRequest 时只需要一个字符串,而 HttpClient 需要一个 HttpMethod
我有一个 asp.net Web API 项目,在我的 WebApiConfig 文件中,我定义了以下路由: config.Routes.MapHttpRoute( name: "Web AP
我正在尝试创建一个方法来调用基于 HttpMethod 的其他方法。我的方法如下所示: public async Task CreateAsync(HttpClient client, string
我们正在使用 PostMethod在 org.apache.commons.httpclient.methods 并注意到 recycle method来自 HttpMethod 接口(interfa
正在查看 Apache 对 HttpClient 的建议 ( http://hc.apache.org/httpclient-3.x/performance.html )其中提到了 Response
在Reference of HttpRequest.HttpMethod在 .NET Framework 中,请求类型使用 System.String 类型声明。 在RFC 2616声明了所有 HTT
在 Reference of HttpRequest.HttpMethod在 .NET Framework 中,请求类型声明为 System.String 类型。 在 RFC 2616声明了所有 HT
正在审查我的同事代码,出现此错误。 任何想法有什么问题?正在尝试运行构建,不幸的是出现此错误 错误 -> Trailing closure passed to parameter of type 'S
我有: import sendgridClient from '@sendgrid/client' sendgridClient.setApiKey(process.env.SENDGRID_API_
我正在使用.net Web API V1 构建一些restful api。 我们正在尝试为 Web API 定义一些路由。我在定义“放置”和“补丁”的路线时遇到一些问题。 它们具有相同的 URL,唯一
我使用 HttpClient 和 HttpMethod 来触发我的 REST 服务,但如果我想为 put 方法提供一些内容,它不起作用。服务在网络服务器上触发,但内容为空。 public boolea
request 是来自 System.Net.Http 的 HttpRequestMessage,我正在尝试使用模式匹配来确定使用了哪种方法提出请求。 这是一个证明我的问题的人为例子: let m =
Foundation 是否为支持的 HTTPMethod 值(例如 GET、POST 等)提供 NSString 常量? 搜索了 NSURLRequest 文档,但找不到任何内容。 最佳答案 据我所知
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 3 年前。 Improve th
我是一名优秀的程序员,十分优秀!