gpt4 book ai didi

ios - 为什么 Golang 将我的 POST 请求视为 GET 请求?

转载 作者:IT王子 更新时间:2023-10-29 01:33:58 28 4
gpt4 key购买 nike

我的服务器代码如下:

// golang
type SomeHandler struct{}

func (*SomeHandler) ServeHTTP(w http.ResponseWriter, req *http.Request) {
fmt.Println("method:", req.Method)
fmt.Println("content length:", req.ContentLength)

// read request body as []byte
content, err := ioutil.ReadAll(req.Body)
if err != nil {
// do sth.
return
}

// decode JSON
// ...
}

客户端:

// Objective-C on iOS 6/7
// NSURL *myUrl = ...
NSMutableURLRequest *req = [[NSMutableURLRequest alloc] initWithURL:myUrl];
[req setHTTPMethod:@"POST"];
[req setValue:@"application/json; charset=utf-8" forHTTPHeaderField:@"Content-Type"];

id obj = @{
@"username" : @"myname",
@"password" : @"mypwd",
};
NSError *error;
NSData *inputJson = [NSJSONSerialization dataWithJSONObject:obj options:0 error:&error];
if (error) {
// no error here
}
[req setHTTPBody:inputJson];

[NSURLConnection sendAsynchronousRequest:req queue:[NSOperationQueue mainQueue]
completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {

if (error) {
NSLog(@"ERROR: %@", error.localizedDescription);
return;
}

NSHTTPURLResponse *resp = (NSHTTPURLResponse *)response;
NSString *outputText = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"response (%d):\n%@", (int)resp.statusCode, outputText);
}

当我在 iPhone 模拟器中运行此 iOS 代码时,服务器端显示:

method: GET
content length: 0

更改我的客户端代码:[req setHTTPMethod:@"HEAD"];,服务器工作:

method: HEAD
content length: <some length>

我不知道我在客户端上的 POST 代码有什么问题,或者我应该在服务器上做什么来检索我的客户端刚刚发送的 []byte 数据。

顺便说一句,我的版本:

$ go version
go version go1.2.1 darwin/amd64

最佳答案

我解决了这个问题!如此奇怪的行为。我不知道为什么会这样。

我像这样注册我的处理程序:

// addr := ...
r := mux.NewRouter()
r.Handle("/abc", new(SomeHandler))
http.Handle("/", r)
// here mux is github.com/gorilla/mux
// these lines of code do the same thing as wrote:
// http.handle("/abc", new(SomeHandler))

err := http.ListenAndServe(addr, nil)
// ...

然后我的客户发送请求说

http://addr:9999//abc

但正确的网址应该是

http://addr:9999/abc

调用-stringByAppendingString:方法时产生的冗余/

关于ios - 为什么 Golang 将我的 POST 请求视为 GET 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23463601/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com