Develop a Facebook-App with Spring-Social – Part VII: What is Going On On The Wire
In this series of Mini-How-Tow’s I will describe how to develop a facebook app with the help of Spring-Social
In the last part of this series, I showed you, how you can sign-in your users through the
signed_request, that is send to your canvas-page.
In this part, I will show you, how to turn on logging of the HTTP-requests, that your app sends to, and the -responses it recieves from the Facebook Graph-API.
The Source is With You
Why You Want To Listen On The Wire
If you are developing your app, you will often wonder, why something does not work as expected. In this case, it is often very usefull to be able to debug the communitation between your app and the Graph-API. But since all requests to the Graph-API are secured by SSL you can not simply listen in with tcpdump or wireshark.
Fortunately, you can turn on the debugging of the underling classes, that process theses requests, to sidestep this problem.
In its default-configuration, the Spring Framework will use the
HttpURLConnection, which comes with the JDK, as http-client.
As described in the documentation, some advanced methods are not available, when using
Besides, the package
HttpClient, which is part of Apaches
HttpComponents is a much more mature, powerful and configurable alternative.
For example, you easily can plug in connection pooling, to speed up the connection handling, or caching to reduce the amount of requests that go through the wire.
In production, you should always use this implementation, instead of the default-one, that comes with the JDK.
Hence, we will switch our configuration to use the
HttpClient from Apache, before turning on the debug-logging.
Switching From Apaches
To siwtch from the default client, that comes with the JDK to Apaches
HttpClient, you have to configure an instance of
HttpRequestFactory in your
public HttpComponentsClientHttpRequestFactory requestFactory(Environment env)
HttpComponentsClientHttpRequestFactory factory =
To use this configuration, you also have to add the dependency
org.apache.httpcomonents:httpclient in your
As you can see, this would also be the right place to enable other specialized configuration-options.
Logging The Headers From HTTP-Requests And Responses
I configured a short-cut to enable the logging of the HTTP-headers of the communication between the app and the Graph-API.
Simply run the app with the additionally switch
Take Full Control
If the headers are not enough to answer your questions, you can enable a lot more debugging messages.
You just have to overwrite the default logging-levels.
Read the original documentation of
HttpClient, for more details.
For example, to enable logging of the headers and the content of all requests, you have to start your app like this:
mvn spring-boot:run \
The second switch is necessary, because I defined the default-level
ERROR for that logger in our
src/main/application.properties, to enable the short-cut for logging only the headers.
Funded by the Europian Union
This article was published in the course of a resarch-project, that is funded by the European Union and the federal state Northrhine-Wetphalia.