Если вы используете Qt и endl, вы случайно можете использовать неправильный endl
, случившийся со мной сегодня, и я был как ..WTF ??
#include <iostream>
#include <QtCore/QtCore>
#include <QtGui/QtGui>
//notice that i dont have a "using namespace std;"
int main(int argc, char** argv)
{
QApplication qapp(argc,argv);
QMainWindow mw;
mw.show();
std::cout << "Finished Execution !" << endl << "...";
// Line above printed: "Finished Execution !67006AB4..."
return qapp.exec();
}
Конечно, это была моя ошибка, так как я должен был написать std::endl
, но если вы используете endl
, qt и using namespace std;
, это зависит от порядка включенных файлов, если будет использоваться правильный endl
. *
Of Конечно, вы могли бы перекомпилировать Qt для использования пространства имен, поэтому вы получите ошибку компиляции для приведенного выше примера.
EDIT: Забыл отметить, что Qt endl
объявлен в «qtextstream.h», который является частью QtCore
* EDIT2: C ++ выберет правильный endl
, если у вас есть using
для std::cout
или пространства имен std
, так как std::endl
находится в том же пространстве имен, что и std::cout
, Механизм ADL C ++ будет выбирать std::endl
.
Вы используете Interceptor для добавления всех желаемых заголовков следующим образом:
OkHttpClient.Builder builder = new OkHttpClient.Builder();
builder.addInterceptor(new Interceptor() {
Request request;
@Override
public Response intercept(@NonNull Chain chain) throws IOException {
request = chain.request().newBuilder().addHeader("Authorization", "Bearer " + GlobalClass.accessToken)
.addHeader("Accept", "application/json").build();
return chain.proceed(request);
}
}).addNetworkInterceptor(httpLoggingInterceptor);
и возвращаете построителя с этим
return builder.connectTimeout(15, TimeUnit.SECONDS)
.writeTimeout(25, TimeUnit.SECONDS)
.readTimeout(15, TimeUnit.SECONDS).build();