2016-09-26 7 views
1

私は必要なさまざまなヘッダーを返すPostmanでこのGETコマンドを正常に実行できます。私はJavaでこれを実装しようとしているが、何も戻って来ていないhttp://SERVER/qcbin/api/authentication/sign-inJava http GETはnullを取得し続ける

GET:私はこの最初のGETのための基本認証を使用しています。私はnullを得続けます。

私が間違っていることを誰かに教えてもらえますか?私は間違いを理解できません。

import java.io.BufferedReader; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.net.HttpURLConnection; 
import java.net.URL; 
import java.util.Base64; 


public class test2 { 

public static void main(String[] args) { 

    try { 
     Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("myproxy", 8080)); 
     URL url = new URL ("http://SERVER/qcbin/api/authentication/sign-in"); 

     byte[] credBytes = ("jsmith" + ":" + "abc123").getBytes(); 

     Base64.Encoder base64Encoder = Base64.getEncoder().withoutPadding(); 
     String encoding = base64Encoder.encodeToString(credBytes); 

     HttpURLConnection connection = (HttpURLConnection) url.openConnection(proxy); 
     connection.setRequestMethod("GET"); 
     connection.setDoOutput(true); 
     connection.setRequestProperty ("Authorization", "Basic " + encoding); 

コンテンツは、次の行の後にヌルに設定されます。あなたは、ストリームから行を読んでいる次のコードで

 InputStream content = (InputStream)connection.getInputStream(); 
     BufferedReader in = 
      new BufferedReader (new InputStreamReader (content)); 
     String line; 
     while ((line = in.readLine()) != null) { 
      System.out.println(line); 
     } 
    } catch(Exception e) { 
     e.printStackTrace(); 
    } 
} 
+0

に達した場合は、マシン上で郵便配達のテストを行いましたJavaコードが実行されていますか?リクエストの 'curl -vvv'を投稿できますか? –

+0

なぜ 'setDoOutput(true)'を呼びますか?この場合、接続に最初に何らかの出力が期待されていませんか? –

+0

@RC - はい、同じマシンです。私は非常にJavaの新しいです。私はカールに慣れていません。 –

答えて

0

while ((line = in.readLine()) != null) { 
    System.out.println(line); 
} 

それはあなたがサーバーを意味し、あなたのストリームから「新ラインの」文字にはないん飽きないということだろう改行文字で終わるデータを送信しますか?そして、あなたのストリームを通って来るデータがなくなったら、in.readLine()はその行末文字をまだ待っていますか?

はでそのコードを交換してみてください:

 // reads to the end of the stream 
    while((value = br.read()) != -1) 
    { 
     // converts int to character 
     char c = (char)value; 

     // prints character 
     System.out.println(c); 
    } 

編集:BufferedReaderのJavadocのから:

パブリック文字列のreadLine() はIOExceptionが、テキストの行を読み込みます。

ラインは、ラインフィード(「\ nを」)のいずれか、 キャリッジリターン(「\ rを」)で終了すると考えられ、またはキャリッジリターンを 改行直後れます。

戻り値:任意の行の終端文字を含む行、ない の内容を含む文字列、またはnull ストリームの終わりに

+0

これは問題にはなりません。いずれの場合でもストリームの終わりに達すると、readLine()はnullを返します。 –

+0

もちろん、ストリームがフラッシュされて閉じられている –

関連する問題