gpt4 book ai didi

ios - 在 POST NSMutableURLRequest 中获取 405 错误

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:09:21 25 4
gpt4 key购买 nike

我有一个与服务器通信的应用程序。我需要向服务器发送消息 ID。我正在使用 NSMutableURL 请求。但是,我在提交请求时收到 405 错误。

下面是代码

messageid=@"1234";
NSURL *aUrl = [NSURL URLWithString:@"http://myexample.com:8080/Padua/rest/messages/messagetodelete"];
NSMutableURLRequest *deleterequest = [NSMutableURLRequest requestWithURL:aUrl
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:60.0];
NSURLConnection *connection= [[NSURLConnection alloc] initWithRequest:deleterequest
delegate:self];

[deleterequest setHTTPMethod:@"POST"];
[deleterequest setValue:[NSString stringWithFormat:@"%d", messageid.length] forHTTPHeaderField:@"Content-Length"];
[deleterequest setValue:@"application/x-www-form-urlencoded charset=utf-8" forHTTPHeaderField:@"Content-Type"];
NSString *postString = messageid;
[deleterequest setHTTPBody:[postString dataUsingEncoding:NSUTF8StringEncoding]];
[connection start];

服务端代码如下

@POST
@Consumes("text/plain")
@Path("/messagetodelete")
public void messageToDelete(String messageid){
//code to delete the message in MongoDB
System.out.println("R u here for iphone??");
}

客户端(iPhone)中的代码是否正确。 POST 使用纯文本。我相信这是我出错的地方。

谁能指导我如何实现它并使服务器接受 NSMutableURLRequest?

最佳答案

存在以下潜在问题:

  • “删除”请求应该使用 DELETE 方法。

  • header的定义
    [deleterequest setValue:@"application/x-www-form-urlencoded charset=utf-8"for HTTPHeaderField:@"Content-Type"];

    错了。 MIME 类型 application/x-www-form-urlencoded 没有参数,也没有字符集。服务器将忽略此参数。

    指定标题的正确方法是:

    [deleterequest setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];

    在应用百分号编码之前,使用 UTF-8 作为参数字符串的字符编码。

  • 设置 Content-Length header 时,您需要正确评估正文数据的长度以字节为单位。在您的代码中,您正在设置 string 的 UTF-16 代码单元数。因此,为了解决这个问题,您需要执行以下操作:

    NSString* postString = ...;
    NSString* postData = [postString dataUsingEncoding:NSUTF8StringEncoding];
    [deleterequest setValue:[NSString stringWithFormat:@"%d", [postData length]] forHTTPHeaderField:@"Content-Length"];
    [deleterequest setHTTPBody: postData];
  • 您需要确保参数字符串已正确编码。

关于ios - 在 POST NSMutableURLRequest 中获取 405 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20172459/

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