2012-09-01 29 views
5

Hôm nay tôi đã gặp sự cố với mã hóa UserAgent khi tôi cố gắng sử dụng HttpWebRequest để đăng yêu cầu.Làm thế nào để thay đổi mã hóa của UserAgent trong HttpWebRequest?

Thông thường, UserAgent bao gồm các chữ cái Latinh và dấu chấm câu. Tuy nhiên, tôi cần phải mô phỏng các yêu cầu web của ứng dụng iOS có UA chứa một số ký tự Unicode (đặc biệt là tiếng Trung).

Sử dụng Fiddler để nhận yêu cầu thô, tôi thấy rằng ứng dụng đã sử dụng mã hóa Unicode đã sử dụng trong UA của nó. Tôi không thể POST nó trong C#; Tôi gặp lỗi này:

You may not try to send Unicode in UserAgent. But it is really important for my project. Now I can simulate the request of App without the bytes of UA.

Làm cách nào để thay đổi mã hóa UA?

Trả lời

2

theo tiêu chuẩn (rfc 2616 (http/1.1), sec 2.2, 3.8. 14.43rfc 2047 (mime, part 3), sec 4, 5), bạn không thể sử dụng bất kỳ mã hóa nào khác nhưng iso-8859-1 cho bất kỳ trường tiêu đề http nào như tác nhân người dùng. Tuy nhiên,

tuy nhiên, bạn có thể áp dụng lược đồ mã hóa của rfc 2047 để ánh xạ chuỗi unicode lên 8859-1 - chuỗi; Tóm lại, bạn quấn văn bản của bạn với một mã định danh ký tự và thay thế các codepoints unicode bằng các giá trị hex của chuỗi octet trong mã hóa tương ứng của chúng.

dụ:

User-Agent: Million-€-Browser trở thành User-Agent: =?utf-8?q?Million-=e2=82=ac-Browser?=, với e2 82 ac là utf-8 octet chuỗi các biểu tượng đồng euro.

Các vấn đề liên quan