菜鸟教程小白 发表于 2022-12-11 18:07:28

java - swift中的Web服务请求对应java代码


                                            <p><p>下面是我的 java 代码,它是示例 web 服务的一部分:</p>

<pre><code>@Override
    public void filter(ContainerRequestContext requestContext)
    {
      Method method = resourceInfo.getResourceMethod();
      //Access allowed for all
      if( ! method.isAnnotationPresent(PermitAll.class))
      {
            //Access denied for all
            if(method.isAnnotationPresent(DenyAll.class))
            {
                requestContext.abortWith(ACCESS_FORBIDDEN);
                return;
            }

            //Get request headers
            final MultivaluedMap&lt;String, String&gt; headers = requestContext.getHeaders();

            //Fetch authorization header
            final List&lt;String&gt; authorization = headers.get(AUTHORIZATION_PROPERTY);

            //If no authorization information present; block access
            if(authorization == null || authorization.isEmpty())
            {
                requestContext.abortWith(ACCESS_DENIED);
                return;
            }

            //Get encoded username and password
            final String encodedUserPassword = authorization.get(0).replaceFirst(AUTHENTICATION_SCHEME + &#34; &#34;, &#34;&#34;);

            //Decode username and password
            String usernameAndPassword = new String(Base64.decode(encodedUserPassword.getBytes()));;

            //Split username and password tokens
            final StringTokenizer tokenizer = new StringTokenizer(usernameAndPassword, &#34;:&#34;);
            final String username = tokenizer.nextToken();
            final String password = tokenizer.nextToken();

            //Verifying Username and password
            System.out.println(username);
            System.out.println(password);

          //Is user valid?
            if( ! isUserAllowed(username, password))
            {
                requestContext.abortWith(ACCESS_DENIED);
                return;
            }
      }
    }
</code></pre>

<p>我得到响应的快速代码是:</p>

<pre><code>let headers = [
      &#34;authorization&#34;: &#34;Basic YWRtaW46YWRtaW4=&#34;,
      &#34;cache-control&#34;: &#34;no-cache&#34;
    ]
    let parameters = [&#34;username&#34; : &#34;admin&#34;,&#34;password&#34; : &#34;admin&#34;]


    let request = NSMutableURLRequest(URL: NSURL(string: &#34;http://192.168.10.229:8080/JerseyDemos/rest/employees&#34;)!,
                                    cachePolicy: .UseProtocolCachePolicy,
                                    timeoutInterval: 60.0)
    request.HTTPMethod = &#34;GET&#34;
    //request.allHTTPHeaderFields = headers
    do {
      request.HTTPBody = try! NSJSONSerialization.dataWithJSONObject(parameters, options: [])
    }
    request.addValue(&#34;application/json&#34;, forHTTPHeaderField: &#34;Content-Type&#34;)
    request.addValue(&#34;application/json&#34;, forHTTPHeaderField: &#34;Accept&#34;)
    let session = NSURLSession.sharedSession()
    let dataTask = session.dataTaskWithRequest(request, completionHandler: { (data, response, error) -&gt; Void in
      if (error != nil) {
            print(error)
      } else {
            let httpResponse = response as? NSHTTPURLResponse
            print(httpResponse)
      }
    })

    dataTask.resume()
</code></pre>

<p>但这不是很好。我收到以下错误:</p>

<blockquote>
<p>Optional(Error Domain=NSURLErrorDomain Code=-1017 &#34;cannot parse response&#34; UserInfo={NSErrorFailingURLStringKey=<a href="http://192.168.10.229:8080/JerseyDemos/rest/employees" rel="noreferrer noopener nofollow">http://192.168.10.229:8080/JerseyDemos/rest/employees</a>, _kCFStreamErrorCodeKey=-1, NSErrorFailingURLKey=<a href="http://192.168.10.229:8080/JerseyDemos/rest/employees" rel="noreferrer noopener nofollow">http://192.168.10.229:8080/JerseyDemos/rest/employees</a>, NSLocalizedDescription=cannot parse response, _kCFStreamErrorDomainKey=4, NSUnderlyingError=0x145319e0 {Error Domain=kCFErrorDomainCFNetwork Code=-1017 &#34;(null)&#34; UserInfo={_kCFStreamErrorDomainKey=4, _kCFStreamErrorCodeKey=-1}}})</p>
</blockquote>

<p>我怎样才能使它工作? java服务工作正常。我用 Postman 查了一下。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>从 ios 10 开始,您应该只使用 https 网址。</p>

<p>您需要将 ssl 证书添加到您的 java 服务器。</p></p>
                                   
                                                <p style="font-size: 20px;">关于java - swift中的Web服务请求对应java代码,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/40765060/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/40765060/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: java - swift中的Web服务请求对应java代码