草庐IT

iphone - 在 XCode 中发送 HTTPS 请求 (iOS)

coder 2024-01-21 原文

我需要你的帮助:)

我要将来 self 的应用程序的 http 请求更改为 https 请求。现在我使用了ASIHTTPRequest然后跟着这个tutorial .你必须知道我是 https 和 ssl 这方面的初学者。我真的很感激任何帮助。

这是我的http请求的代码:

- (void)fetchDataFromServer{

// Create Instance
ASIFormDataRequest *request = [[ASIFormDataRequest alloc] initWithURL:url];


// Parameter der POST Anfrage setzen
[request setPostValue:@"anything" forKey:@"app_action"];


[request setValidatesSecureCertificate:NO]; // no certificate so far
request.delegate = self; // assign delegate
[request startAsynchronous]; // send request

效果很好。但现在我需要保护数据连接,因此我必须使用 https

我怎样才能实现这个需求?是ASIHTTPRequest正确的事情,它甚至支持吗?我需要了解服务器中证书的哪些信息?

请告诉我你所知道的一切:)

非常感谢 - 你是最棒的。

问候 克里斯

最佳答案

证书验证是一件好事,几乎应该始终进行。您不需要为 HTTP 请求禁用它。

这条规则实际上只有一个异常(exception)。如果您必须连接到没有由受信任的证书颁发机构正确签名的证书的 HTTPS Web 服务,则必须关闭证书验证。

为什么您的网络服务可能没有有效的证书

  1. 你被黑了!这就是证书和证书验证的原因。
  2. Web 服务在配置错误的 SSL 服务器上运行。
  3. 证书已过期,服务器未保持正常运行。
  4. Web 服务的所有者支付的费用太低,无法让受信任的证书颁发机构签署他的证书。
  5. 不向公众公开的开发服务器可能不值得费心去获取签名证书。

如何知道网络服务是否没有正确签名的证书

  1. 在网络浏览器中访问网络服务,看看您是否收到证书错误。
  2. 检查您的应用中是否存在无效证书错误。

关闭证书验证的替代方法

  1. 让受信任的证书颁发机构签署您的证书。
  2. 创建您自己的证书颁发机构,使用您自己的证书颁发机构签署您的证书,并将您的证书颁发机构作为受信任的证书颁发机构安装在 iOS 设备上。

关于iphone - 在 XCode 中发送 HTTPS 请求 (iOS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12859427/

有关iphone - 在 XCode 中发送 HTTPS 请求 (iOS)的更多相关文章

  1. ruby-on-rails - Rails HTML 请求渲染 JSON - 2

    在我的Controller中,我通过以下方式在我的index方法中支持HTML和JSON:respond_todo|format|format.htmlformat.json{renderjson:@user}end在浏览器中拉起它时,它会自然地以HTML呈现。但是,当我对/user资源进行内容类型为application/json的curl调用时(因为它是索引方法),我仍然将HTML作为响应。如何获取JSON作为响应?我还需要说明什么? 最佳答案 您应该将.json附加到请求的url,提供的格式在routes.rb的路径中定义。这

  2. ruby - 如何在 Lion 上安装 Xcode 4.6,需要用 RVM 升级 ruby - 2

    我实际上是在尝试使用RVM在我的OSX10.7.5上更新ruby,并在输入以下命令后:rvminstallruby我得到了以下回复:Searchingforbinaryrubies,thismighttakesometime.Checkingrequirementsforosx.Installingrequirementsforosx.Updatingsystem.......Errorrunning'requirements_osx_brew_update_systemruby-2.0.0-p247',pleaseread/Users/username/.rvm/log/138121

  3. ruby - 如何验证 IO.copy_stream 是否成功 - 2

    这里有一个很好的答案解释了如何在Ruby中下载文件而不将其加载到内存中:https://stackoverflow.com/a/29743394/4852737require'open-uri'download=open('http://example.com/image.png')IO.copy_stream(download,'~/image.png')我如何验证下载文件的IO.copy_stream调用是否真的成功——这意味着下载的文件与我打算下载的文件完全相同,而不是下载一半的损坏文件?documentation说IO.copy_stream返回它复制的字节数,但是当我还没有下

  4. Ruby 文件 IO 定界符? - 2

    我正在尝试解析一个文本文件,该文件每行包含可变数量的单词和数字,如下所示:foo4.500bar3.001.33foobar如何读取由空格而不是换行符分隔的文件?有什么方法可以设置File("file.txt").foreach方法以使用空格而不是换行符作为分隔符? 最佳答案 接受的答案将slurp文件,这可能是大文本文件的问题。更好的解决方案是IO.foreach.它是惯用的,将按字符流式传输文件:File.foreach(filename,""){|string|putsstring}包含“thisisanexample”结果的

  5. jquery - 我的 jquery AJAX POST 请求无需发送 Authenticity Token (Rails) - 2

    rails中是否有任何规定允许站点的所有AJAXPOST请求在没有authenticity_token的情况下通过?我有一个调用Controller方法的JqueryPOSTajax调用,但我没有在其中放置任何真实性代码,但调用成功。我的ApplicationController确实有'request_forgery_protection'并且我已经改变了config.action_controller.consider_all_requests_local在我的environments/development.rb中为false我还搜索了我的代码以确保我没有重载ajaxSend来发送

  6. Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting - 2

    1.错误信息:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:requestcanceledwhilewaitingforconnection(Client.Timeoutexceededwhileawaitingheaders)或者:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:TLShandshaketimeout2.报错原因:docker使用的镜像网址默认为国外,下载容易超时,需要修改成国内镜像地址(首先阿里

  7. ruby-on-rails - 在 Ruby on Rails 中发送响应之前如何等待多个异步操作完成? - 2

    在我做的一些网络开发中,我有多个操作开始,比如对外部API的GET请求,我希望它们同时开始,因为一个不依赖另一个的结果。我希望事情能够在后台运行。我找到了concurrent-rubylibrary这似乎运作良好。通过将其混合到您创建的类中,该类的方法具有在后台线程上运行的异步版本。这导致我编写如下代码,其中FirstAsyncWorker和SecondAsyncWorker是我编写的类,我在其中混合了Concurrent::Async模块,并编写了一个名为“work”的方法来发送HTTP请求:defindexop1_result=FirstAsyncWorker.new.async.

  8. ruby - 为什么不能使用类IO的实例方法noecho? - 2

    print"Enteryourpassword:"pass=STDIN.noecho(&:gets)puts"Yourpasswordis#{pass}!"输出:Enteryourpassword:input.rb:2:in`':undefinedmethod`noecho'for#>(NoMethodError) 最佳答案 一开始require'io/console'后来的Ruby1.9.3 关于ruby-为什么不能使用类IO的实例方法noecho?,我们在StackOverflow上

  9. ruby - HTTP 请求中的用户代理,Ruby - 2

    我是Ruby的新手。我试过查看在线文档,但没有找到任何有效的方法。我想在以下HTTP请求botget_response()和get()中包含一个用户代理。有人可以指出我正确的方向吗?#PreliminarycheckthatProggitisupcheck=Net::HTTP.get_response(URI.parse(proggit_url))ifcheck.code!="200"puts"ErrorcontactingProggit"returnend#Attempttogetthejsonresponse=Net::HTTP.get(URI.parse(proggit_url)

  10. ruby-on-rails - 获取并发布相同匹配项的请求 - 2

    在我的路线文件中我有:match'graphs/(:id(/:action))'=>'graphs#(:action)'如果是GET请求(工作)或POST请求(不工作),我想匹配它我知道我可以使用以下方法在资源中声明POST请求:post'/'=>:show,:on=>:member但是我怎样才能为比赛做到这一点呢?谢谢。 最佳答案 如果你同时想要POST和GETmatch'graphs/(:id(/:action))'=>'graphs#(:action)',:via=>[:get,:post]编辑默认值可以设置如下match'g

随机推荐