Я получил эту ошибку много раз раньше. И я уверен, что все программисты PHP по крайней мере однажды получили эту ошибку. Чтобы решить эту ошибку, вы можете решить использовать решение по вашему уровню проблемы:
Возможное решение 1:
Возможно, вы оставили пробелы до или после (в конце файла после?>) ie
THERE SHOULD BE NO BLANK SPACES HERE
DO CHECK FOR BLANK SPACES HERE AS WELL; THIS LINE (blank line) SHOULD NOT EXIST.
В большинстве случаев это должно решить вашу проблему. Проверьте все файлы, связанные с файлом require
.
Примечание: Иногда EDITOR (IDE), например gedit (редактор linux по умолчанию), добавляет одну пустую строку в файл save save. Этого не должно быть. Если вы используете linux. вы можете использовать редактор VI для удаления пробела / строк после?> в конце страницы.
Если это не ваш случай, тогда вы можете использовать ob_start для буферизации вывода, как показано ниже:
Возможное решение 2:
Это приведет к буферизации вывода и ваши заголовки будут созданы после буферизации страницы.
Можно использовать Потоковый API java 8
private String[] getMovieTitlesFromApi(String query) {
List<String> titlesLst = new ArrayList<>();
IntStream.iterate(1, n -> n + 1).takeWhile(n -> n < totalPages).limit(totalPages).forEach(c -> {
try (BufferedReader reader = new BufferedReader(new InputStreamReader(
new URL("https://jsonmock.hackerrank.com/api/movies/search/?Title=" + URLEncoder.encode(query, "UTF-8") + "&page=" + c)
.openConnection().getInputStream()))) {
Supplier<Stream<String>> contentStream = reader::lines;
Optional<JsonObject> objectAsJob = contentStream.get()
.map(contentStreamLine -> new Gson().fromJson(contentStreamLine, JsonObject.class)).findFirst();
totalPages = objectAsJob.map(convertedLines -> convertedLines.get("total_pages").getAsInt()).get();
Optional<JsonArray> dataFilter = objectAsJob.map(convertedLines -> convertedLines.getAsJsonArray("data"));
IntStream.iterate(0, n -> n + 1).takeWhile(n -> n < dataFilter.get().size()).forEach(dataLines -> {
titlesLst.add(dataFilter.get().get(dataLines).getAsJsonObject().get("Title").getAsString());
Collections.sort(titlesLst);
});
} catch (Exception e) {
e.printStackTrace();
}
totalPages++;
});
storeMovieTitlesInCache(query, titlesLst.stream().distinct().collect(Collectors.toList()).toArray(new String[0]));
return titlesLst.toArray(new String[0]);
}
Вот мое решение в Python для этого:
import requests
import json
def getMovieTitles(substr):
titles = []
data = requests.get("https://jsonmock.hackerrank.com/api/movies/search/?Title={}".format(substr))
response = json.loads(data.content.decode('utf-8'))
for page in range(0, response["total_pages"]):
page_response = requests.get("https://jsonmock.hackerrank.com/api/movies/search/?Title={}&page={}".format(substr, page + 1))
page_content = json.loads(page_response.content.decode('utf-8'))
#print ('page_content', page_content, 'type(page_content)', type(page_content))
for item in range(0, len(page_content["data"])):
titles.append(str(page_content["data"][item]["Title"]))
titles.sort()
return titles
print(getMovieTitles("spiderman"))