2016-03-20 5 views
0

çalışmıyor:GWT RequestBuilder setHeader ben aşağıdaki sınıf (tamlığı için tam gönderme) kullanılarak bir OAuth2 Sunucu uygulamasına bağlanmak çalışıyorum

import com.google.gwt.http.client.*; 
import com.googlecode.gwt.crypto.bouncycastle.util.encoders.Base64; 

import java.util.Map; 
import java.util.function.Consumer; 

public class HttpManager { 

    private static String toFormData(Map<String, String> data) { 

     StringBuilder sb = new StringBuilder(); 

     for (Map.Entry<String, String> entry : data.entrySet()) 
      sb.append("&") 
        .append(entry.getKey()) 
        .append("=") 
        .append(entry.getValue()); 

     sb.deleteCharAt(0); 
     return sb.toString(); 
    } 

    public void postFormData(String url, Map<String, String> data, Consumer<Response> onSuccess, Consumer<Response> onFail) throws RequestException { 

     final String dataAsString = toFormData(data); 
     RequestBuilder builder = new RequestBuilder(RequestBuilder.POST, url); 
     builder.setHeader("Content-Type", "application/x-www-form-urlencoded"); 
     builder.setHeader("Accept", "application/x-www-form-urlencoded"); 
     builder.setHeader("Authorization", "Basic " + Base64.encode(("appId" + ":" + "oauthSecret").getBytes())); 

     builder.sendRequest(dataAsString, new RequestCallback() { 
      @Override 
      public void onResponseReceived(Request request, Response response) { 
       if(response.getStatusCode() >= 400) { 
        onFail.accept(response); 
       } else { 
        onSuccess.accept(response); 
       } 
      } 

      @Override 
      public void onError(Request request, Throwable throwable) { 
       onFail.accept(null); 
      } 
     }); 
    } 
} 

Gördüğünüz gibi, açıkça, Content-Type ekleme Başlığa ve Yetkilendirme kabul edilir. Dahası, bazı veriler üzerine yazıyorum. Gerçekte

olsa istek şuna benzer:

OPTIONS /oauth/token HTTP/1.1 
Host: 127.0.0.1:8080 
Connection: keep-alive 
Access-Control-Request-Method: POST 
Origin: http://192.168.2.101:8888 
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36 
Access-Control-Request-Headers: accept, authorization, content-type 
Accept: */* 
Referer: http://192.168.2.101:8888/demo.html 
Accept-Encoding: gzip, deflate, sdch 
Accept-Language: de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4 

yukarıdaki kurulum verilen böyle bir istek, görmeyi beklemiyorum. İstek başlıklarına ne oldu? Ayrıca, hiç bir istek gövdesi kalmadı. Ve neden istek türü Seçenek? Birileri ışık tutabilir mi?

cevap

1

Bunun nedeni, çapraz kaynak olma isteğidir ve gördüğünüz şey, ön kontrol isteğidir. , . Beklenen davranış budur ve sunucu uygun yanıt üstbilgisiyle yetkilendirmelidir.

İlgili konular