React Native SDK - اعتراض الشبكة
اعتراض الشبكة
Section titled اعتراض الشبكةيُصدّر ORTracker الكائن NetworkListener الذي يقبل المهام والطلبات على حد سواء، وإليك كيفية القيام بذلك:
import ORTracker
func fetchPokemonData(for name: String) {
let networkListener = NetworkListener()
let url = URL(string: "https://pokeapi.co/api/v2/pokemon/ditto")!
var request = URLRequest(url: url)
request.httpMethod = "GET" // This is the default, so it's optional in this case.
// Start the network listener with the request
networkListener.start(request: request)
// Create a data task
let task = URLSession.shared.dataTask(with: request) { data, response, error in
if let error = error {
print("Error: \(error.localizedDescription)")
return
}
if let data = data {
do {
let json = try JSONSerialization.jsonObject(with: data, options: [])
print(json)
} catch {
print("Error deserializing JSON: \(error)")
}
}
networkListener.finish(response: response, data: data)
}
task.resume()
}
تنقية الطلب
Section titled تنقية الطلبيُصدّر مفتاحان لاقتطاع بيانات الطلب/الاستجابة تلقائيًا: ignoredKeys لجسم الرسالة و ignoredHeaders للترويسات. سيتم تنقية كل من الطلب والاستجابة، لكن جسم الرسالة لن يتأثر إلا إذا كان JSON صالحًا.
ما عليك سوى إسناد قائمة من السلاسل النصية التي ترغب في تنقيتها:
let networkListener = NetworkListener()
networkListener.ignoredHeaders = ["mySecretToken"]
networkListener.ignoredKeys = ["password"]
من الممكن أيضًا تغيير بيانات الاستجابة قبل تمريرها إلى الـ listener:
// ... request
var sanitizedData
if let data = data {
do {
let json = try JSONSerialization.jsonObject(with: data, options: [])
sanitizedData = customSanitizeFunction(data)
print(json)
} catch {
print("Error deserializing JSON: \(error)")
}
}
networkListener.finish(response: response, data: sanitizedData)
هل لديك أسئلة؟
Section titled هل لديك أسئلة؟إذا كانت لديك أي أسئلة حول هذه العملية، فلا تتردد في التواصل معنا عبر Slack الخاص بنا أو الاطلاع على المنتدى الخاص بنا.