gpt4 book ai didi

ios - 使用 httpmethod PUT 或 DELETE 的 REST NSMutableURLRequest

转载 作者:行者123 更新时间:2023-11-29 13:23:38 26 4
gpt4 key购买 nike

POST 请求一切正常,但找不到处理 PUT 或 DELETE 的方法?

 NSMutableURLRequest *mutableRequest = [[NSMutableURLRequest alloc] init];        
[mutableRequest setURL:[NSURL URLWithString:[NSString

stringWithFormat:@"http://abc.com/update/27"]]];
[mutableRequest setHTTPMethod:@"PUT"];
[mutableRequest addValue:@"application/json" forHTTPHeaderField:@"Accept"];
[mutableRequest addValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[mutableRequest addValue:@"PUT" forHTTPHeaderField:@"X-HTTP-Method-Override"];
[mutableRequest addValue:sessionId forHTTPHeaderField:@"ZURMO_SESSION_ID"];
[mutableRequest addValue:token forHTTPHeaderField:@"ZURMO_TOKEN"];
[mutableRequest addValue:@"REST" forHTTPHeaderField:@"ZURMO_API_REQUEST_TYPE"];
NSString *postLength = [NSString stringWithFormat:@"%d",[postdata3 length]];
[mutableRequest addValue:postLength forHTTPHeaderField:@"Content-Length"];
[mutableRequest setHTTPBody:postdata3]

这就是服务器端 (PHP) 使用 PUT、GET、POST 和 DELETE 处理 api 调用的方式。任何帮助将不胜感激谢谢

public static function createApiCall($url, $method, $headers, $data = array())
{
if ($method == 'PUT')
{
$headers[] = 'X-HTTP-Method-Override: PUT'; //also tried this one to add header
}

$handle = curl_init();
curl_setopt($handle, CURLOPT_URL, $url);
curl_setopt($handle, CURLOPT_HTTPHEADER, $headers);
curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
curl_setopt($handle, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($handle, CURLOPT_SSL_VERIFYPEER, false);

switch($method)
{
case 'GET':
break;
case 'POST':
curl_setopt($handle, CURLOPT_POST, true);
curl_setopt($handle, CURLOPT_POSTFIELDS, http_build_query($data));
break;
case 'PUT':
curl_setopt($handle, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($handle, CURLOPT_POSTFIELDS, http_build_query($data));
break;
case 'DELETE':
curl_setopt($handle, CURLOPT_CUSTOMREQUEST, 'DELETE');
break;
}
$response = curl_exec($handle);
return $response;
}

最佳答案

不知道显式错误就很难分辨。

PUT 或 DELETE 的使用通常由称为_method 的“隐藏参数”实现。它不仅特定于例如 Spring MVC 的标记库,而且还被其他一些客户端框架使用。 Spring 只是遵循惯例,事实上就是这样。

为了正确使用它,您必须知道您的后端如何处理 PUT 或 DELETE 请求。

例如,在 spring 中,您需要定义一个过滤器(HiddenHttpMethodFilter,请参阅 javadoc),它将 _method 参数转换为 HttpServletRequest 中的“真实”HTTP 方法表示。这是作为过滤器完成的,以强调缺少 PUT 和 DELETE 是浏览器问题这一事实 - servlet API 支持它很好。

关于ios - 使用 httpmethod PUT 或 DELETE 的 REST NSMutableURLRequest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13731767/

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