こんにちは、私はTwitterのコンソールアプリケーションを作成しようとしている問題を持っています。レスポンスを得るときに私はそれにいくつかのスラッシュを持っています。 ここに私のコードは次のとおりです。BIO
char new_request[1024] = "GET /1.1/statuses/user_timeline.json?count=4&screen_name=twitterapi HTTP/1.1\r\nHost: api.twitter.com\r\nUser-Agent: twitter-terminal-app$
strcat(new_request, bearer);
strcat(new_request, "\r\nAccept-Encoding: gzip\r\n\r\n\0");
BIO_write(bio, new_request, strlen(new_request));
printf("%s\n", new_request);
p = BIO_read(bio, ans, 2047); // Getting header
ans[p] = 0;
printf("%s\n", ans);
char ans2[100000] = "";
p = BIO_read(bio, ans2, 10000); // Getting body
BIO_should_retry(bio);
FILE *file = fopen("result.txt", "w+");
fputs(ans2, file);
printf("%s\n%i\n", ans2, p);
私は身体を持っている答えは以下のようになります。
▒▒is▒HǿJ▒_ ▒▒▒▒V▒▒▒▒.▒▒T▒▒ f ▒Tmmm ▒P▒1▒|▒}▒%▒▒▒▒▒▒▒▒F%▒C*;▒▒D/#▒L▒▒▒ ▒?L▒A▒▒▒N▒▒ĝ▒▒▒▒$▒El▒▒▒▒X▒▒B0▒〜%▒▒5▒˲@ Y)GY▒ctz▒h&-▒▒▒O> AG▒▒▒l6b▒z▒:K ▒T▒\▒▒2+▒b▒H▒& B▒▒▒B▒qV▒ ▒▒▒▒▒ ▒▒a_▒l▒?▒▒▒▒W▒▒u%▒▒▒▒1M▒v▒▒L▒▒
多分答えは何とかエンコードされています問題。セルフdev.twitter.comにしようとしましたが、何の答えも見つかりませんでした。 BIO_read()の代わりにBIO_gets()を使用すると、答えは-2になります。何か案は?
あなたが進またはbase64の可能性が最も高いたいと思うので、それは、バイナリとしてエンコードされるようになります.... –
あなたが* 2回目のリードで得たものです。*最初の読み取りがすべてお読みになることを保証し、ここでは何もありませんヘッダー。それで、ここでは、あなたが二度目の読書で得たものが身体であることを保証するものは何もありません。ここではヘッダーのどれかに少しでも注意を払う必要はありません。例えば、 'Content-encoding'です。 HTTPまたはHTTPSを自分で実装しないでください。あなたが考えるより複雑です。既存のライブラリを使用します。私がやっている – EJP
プロジェクトは、自分cでHTTPの実装については、実際にある:答えのため –