The root cause was exactly what was mentioned in the older discussion you linked: I was constructing the Java KiteTicker with the parameters in the wrong order.
I had this in my code:
// ❌ Wrong KiteTicker ticker = new KiteTicker(apiKey, accessToken);
But the correct constructor signature is:
// ✔ Correct KiteTicker ticker = new KiteTicker(accessToken, apiKey);
Once I swapped the arguments to (accessToken, apiKey), the WebSocket handshake started succeeding immediately:
HTTP APIs were already working with the same api_key + access_token
After fixing the parameter order, KiteTicker connected and ticks started streaming as expected
No more OpeningHandshakeException: HTTP/1.1 403 Forbidden
Thank you for pointing me to the earlier thread — it saved me a ton of time and will surely help others who hit the same 403 issue.
Quick update — this is now resolved.
The root cause was exactly what was mentioned in the older discussion you linked:
I was constructing the Java KiteTicker with the parameters in the wrong order.
I had this in my code:
// ❌ Wrong
KiteTicker ticker = new KiteTicker(apiKey, accessToken);
But the correct constructor signature is:
// ✔ Correct
KiteTicker ticker = new KiteTicker(accessToken, apiKey);
Once I swapped the arguments to (accessToken, apiKey), the WebSocket handshake started succeeding immediately:
HTTP APIs were already working with the same api_key + access_token
After fixing the parameter order, KiteTicker connected and ticks started streaming as expected
No more OpeningHandshakeException: HTTP/1.1 403 Forbidden
Thank you for pointing me to the earlier thread — it saved me a ton of time and will surely help others who hit the same 403 issue.
Marking this as solved.