Ваш код в порядке и работает правильно.Он не возвращает ноль. Вы думаете, что он возвращает ноль, потому что данные, которые вы получаете, содержат \n\n
, поэтому json должен начинаться несколькими строками ниже.Чтобы увидеть данные, вам нужно немного прокрутить вкладку «Консоль» или изменить размер горизонтальной линии в кружке ниже.
Хотя в Unity лучше использовать UnityWebRequest
, но HttpWebRequest
также должно работать.Чтобы ответить на ваш другой вопрос, как только вы загрузите данные, используйте JsonUtility.FromJson
для десериализации их в объект, после чего вы сможете получить доступ к цене.
Вот как должна выглядеть эта функциякак в C #:
void Start()
{
StartCoroutine(CheckForPaidApp("http://itunes.apple.com/lookup?id=1218822890")); ;
}
IEnumerator CheckForPaidApp(string uri)
{
UnityWebRequest uwr = UnityWebRequest.Get(uri);
yield return uwr.SendWebRequest();
if (uwr.isHttpError || uwr.isNetworkError)
{
Debug.Log("Error While Sending: " + uwr.error);
}
else
{
string data = uwr.downloadHandler.text;
Debug.Log("Received: " + uwr.downloadHandler.text);
//Serialize to Json
RootObject jsonObj = JsonUtility.FromJson<RootObject>(data);
List<Result> resultObj = jsonObj.results;
//Loop over the result and show the price information
for (int i = 0; i < resultObj.Count; i++)
{
double price = resultObj[i].price;
Debug.Log("Price = \n" + price);
if (price > 0.0f)
{
Debug.Log("Its Paid App\n");
}
else
{
// show ads here
}
}
}
}
Объекты / классы для десериализации json в:
[Serializable]
public class Result
{
public List<string> screenshotUrls;
public List<string> ipadScreenshotUrls;
public List<object> appletvScreenshotUrls;
public string artworkUrl512;
public string artworkUrl60;
public string artworkUrl100;
public string artistViewUrl;
public List<string> supportedDevices;
public string kind;
public List<string> features;
public bool isGameCenterEnabled;
public List<object> advisories;
public string fileSizeBytes;
public List<string> languageCodesISO2A;
public string trackContentRating;
public string trackViewUrl;
public string contentAdvisoryRating;
public string trackCensoredName;
public List<string> genreIds;
public int trackId;
public string trackName;
public string primaryGenreName;
public int primaryGenreId;
public string currency;
public string wrapperType;
public string version;
public int artistId;
public string artistName;
public List<string> genres;
public double price;
public string description;
public string bundleId;
public string sellerName;
public bool isVppDeviceBasedLicensingEnabled;
public DateTime releaseDate;
public DateTime currentVersionReleaseDate;
public string minimumOsVersion;
public string formattedPrice;
}
[Serializable]
public class RootObject
{
public int resultCount;
public List<Result> results;
}